diff --git a/.gitattributes b/.gitattributes
index b534f20ca284b79273f54f7c8076e015e2b6bf5f..61523eee6df228ee150a4996691ea28105783d0c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -10759,3 +10759,70 @@ GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/inference/
GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png filter=lfs diff=lfs merge=lfs -text
GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png filter=lfs diff=lfs merge=lfs -text
GEM-3D-ct-text4-newdata-newvae-retrain/misc/overview.jpg filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png filter=lfs diff=lfs merge=lfs -text
+GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg filter=lfs diff=lfs merge=lfs -text
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/.gitignore b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4d0b9aa67d09e8f2ba6e64e72a19c78874cd4550
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/.gitignore
@@ -0,0 +1,8 @@
+*.pyc
+*.png
+*.ckpt
+*.zip
+
+logs/
+data/
+infer_model/
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LICENSE b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..f288702d2fa16d3cdf0035b15a9fcbc552cd88e7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ 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 3 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, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..83f733a0e56b0e547b7d6e004a2b3bf6eedeced6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__init__.py
@@ -0,0 +1,4 @@
+
+from .models.autoencoder import LeanVAE
+from .models.autoencoder_pl import AutoEncoderEngine
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4f66e505a19a6f4e632287ad9f5f2ecb146a5329
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..60d729867d017cb76cfab4df08cbb5a36842b357
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6a502ec7c72b1713b322e2833801b3039173eda5
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1df8108349509b985289d07ee0df9423be4d90d2
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..062096721fbbd51dfd70d2f8b4bd5c14a460ad1f
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/__pycache__/data.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/ckpts/LeanVAE-dim16.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/ckpts/LeanVAE-dim16.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..1edb223dac2ce1fa35e186ed038f7be19bff827c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/ckpts/LeanVAE-dim16.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c1d65765e44ced040a43a0bb7084a936e5b3862d21df4a9fd13580508cd1ecb
+size 159199850
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/data.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/data.py
new file mode 100644
index 0000000000000000000000000000000000000000..03cd3720ab98e9d147bf278c94dd3e19cadc6bc2
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/data.py
@@ -0,0 +1,466 @@
+import os
+import os.path as osp
+import math
+import random
+import argparse
+import numpy as np
+from PIL import Image
+from torch.utils.data import BatchSampler, Dataset, Sampler
+import torch
+import torch.utils.data as data
+import torch.nn.functional as F
+import torch.distributed as dist
+from torchvision.datasets.video_utils import VideoClips
+import pytorch_lightning as pl
+from typing import TypeVar, Optional, Iterator, List
+from collections import Counter, defaultdict
+from decord import VideoReader
+from .utils.video_utils import VideoNorm
+
+try:
+ from torchvision.transforms import InterpolationMode
+
+ def _pil_interp(method):
+ if method == 'bicubic':
+ return InterpolationMode.BICUBIC
+ elif method == 'lanczos':
+ return InterpolationMode.LANCZOS
+ elif method == 'hamming':
+ return InterpolationMode.HAMMING
+ else:
+ # default bilinear, do we want to allow nearest?
+ return InterpolationMode.BILINEAR
+
+
+ import timm.data.transforms as timm_transforms
+
+ timm_transforms._pil_interp = _pil_interp
+except:
+ from timm.data.transforms import _pil_interp
+
+class MultiSizeVideoDataset(data.Dataset):
+ """ A flexible dataset for loading videos of different resolutions stored in a structured format.
+ This dataset reads video file paths from text files, where each file corresponds to a specific resolution (e.g., `256x256`).
+ Returns BCTHW videos in the range [-0.5, 0.5] """
+ def __init__(self, data_list, data_folder=None, sequence_length=17, train=True, sample_rate=1, dynamic_sample=False):
+ """
+ Args:
+ data_list (str): Path to the folder containing text files with video paths.
+ data_folder (Optional[str]): Root folder where videos are stored (if paths in data_list are relative).
+
+ sequence_length: length of extracted video sequences
+ """
+ super().__init__()
+ self.train = train
+ self.data_folder = data_folder
+ self.sequence_length = sequence_length
+ self.dynamic_sample = dynamic_sample
+ self.sample_rate = sample_rate
+
+ lengths = []
+ annotations = []
+ for dir in os.listdir(data_list):
+ file_path = os.path.join(data_list, dir)
+ with open(file_path) as f:
+ annotation = [ann.strip() for ann in f.readlines()]
+ annotations.extend(annotation)
+ lengths.extend([dir] * len(annotation))
+
+ self.annotations = annotations
+ self.lengths = lengths
+
+ self.norm = VideoNorm()
+
+ def __len__(self):
+ return len(self.annotations)
+
+
+ def __getitem__(self, idx):
+
+ video_path = self.annotations[idx] if self.data_folder is None else os.path.join(self.data_folder, self.annotations[idx])
+ try:
+ decord_vr = VideoReader(video_path)
+ total_frames = len(decord_vr)
+ except Exception as e:
+ raise RuntimeError(f"Failed to read video: {video_path}. Error: {e}")
+
+ if self.dynamic_sample:
+ sample_rate = random.randint(1, self.sample_rate)
+ else:
+ sample_rate = self.sample_rate
+
+ required_frames = self.sequence_length * sample_rate
+ if total_frames < self.sequence_length:
+ raise RuntimeError(f"Video {video_path} has only {total_frames} frames, but {self.sequence_length} are required.")
+
+ if total_frames < required_frames:
+ sample_rate = 1
+ required_frames = self.sequence_length
+
+ start_frame_ind = random.randint(0, max(0, total_frames - required_frames))
+ end_frame_ind = min(start_frame_ind + required_frames, total_frames)
+ frame_indice = np.linspace(
+ start_frame_ind, end_frame_ind - 1, self.sequence_length, dtype=int
+ )
+
+ video_data = decord_vr.get_batch(frame_indice).asnumpy()
+ video_data = torch.from_numpy(video_data).float()
+ video_data = video_data.permute(0, 3, 1, 2)
+
+ video = self.norm(video_data).permute(1, 0, 2, 3)
+ return {"video": video}
+
+class MultiFilesBatchVideoSampler(BatchSampler):
+ """A sampler wrapper for grouping videos within same folder into a same batch.
+ Args:
+ sampler (Sampler): Base sampler.
+ dataset (Dataset): Dataset providing data information.
+ batch_size (int): Size of mini-batch.
+ drop_last (bool): If ``True``, the sampler will drop the last batch if
+ its size would be less than ``batch_size``.
+ aspect_ratios (dict): The predefined aspect ratios.
+ """
+ def __init__(self,
+ sampler: Sampler,
+ dataset: Dataset,
+ batch_size: int,
+ train_folder: str = None,
+ drop_last: bool = False
+ ) -> None:
+ if not isinstance(sampler, Sampler):
+ raise TypeError('sampler should be an instance of ``Sampler``, '
+ f'but got {sampler}')
+ if not isinstance(batch_size, int) or batch_size <= 0:
+ raise ValueError('batch_size should be a positive integer value, '
+ f'but got batch_size={batch_size}')
+ self.sampler = sampler
+ self.dataset = dataset
+ self.train_folder = train_folder
+ self.batch_size = batch_size
+ self.drop_last = drop_last
+ self.bucket = {file_name: [] for file_name in os.listdir(self.train_folder)}
+
+ #{file_name: [list(os.listdir(os.path.join(self.train_folder, file_name)))] for file_name in os.listdir(self.train_folder)}
+ self.idx2file = []
+
+
+ def __iter__(self):
+ for idx in self.sampler:
+ file_name = self.idx2file[idx]
+ self.bucket[file_name].append(idx)
+ bucket = self.bucket[file_name]
+ bucket.append(idx)
+ # yield a batch of indices in the same aspect ratio group
+ if len(bucket) == self.batch_size:
+ yield bucket[:]
+ del bucket[:]
+
+
+def group_data_fun(lengths, generator=None):
+ # counter is decrease order
+ counter = Counter(lengths) # counter {'1x256x256': 3, ''} lengths ['1x256x256', '1x256x256', '1x256x256', ...]
+ grouped_indices = defaultdict(list)
+ for idx, item in enumerate(lengths): # group idx to a list
+ grouped_indices[item].append(idx)
+
+ grouped_indices = dict(grouped_indices) # {'1x256x256': [0, 1, 2], ...}
+ sorted_indices = [grouped_indices[item] for (item, _) in sorted(counter.items(), key=lambda x: x[1], reverse=True)]
+
+ # shuffle in each group
+ shuffle_sorted_indices = []
+ for indice in sorted_indices:
+ shuffle_idx = torch.randperm(len(indice), generator=generator).tolist()
+ shuffle_sorted_indices.extend([indice[idx] for idx in shuffle_idx])
+ return shuffle_sorted_indices
+
+def last_group_data_fun(shuffled_megabatches, lengths):
+ # lengths ['1x256x256', '1x256x256', '1x256x256' ...]
+ re_shuffled_megabatches = []
+ # print('shuffled_megabatches', len(shuffled_megabatches))
+ for i_megabatch, megabatch in enumerate(shuffled_megabatches):
+ re_megabatch = []
+ for i_batch, batch in enumerate(megabatch):
+ assert len(batch) != 0
+
+ len_each_batch = [lengths[i] for i in batch] # ['1x256x256', '1x256x256']
+ idx_length_dict = dict([*zip(batch, len_each_batch)]) # {0: '1x256x256', 100: '1x256x256'}
+ count_dict = Counter(len_each_batch) # {'1x256x256': 2} or {'1x256x256': 1, '1x768x256': 1}
+ if len(count_dict) != 1:
+ sorted_by_value = sorted(count_dict.items(), key=lambda item: item[1]) # {'1x256x256': 1, '1x768x256': 1}
+ # import ipdb;ipdb.set_trace()
+ # print(batch, idx_length_dict, count_dict, sorted_by_value)
+ pick_length = sorted_by_value[-1][0] # the highest frequency
+ candidate_batch = [idx for idx, length in idx_length_dict.items() if length == pick_length]
+ random_select_batch = [random.choice(candidate_batch) for i in range(len(len_each_batch) - len(candidate_batch))]
+ # print(batch, idx_length_dict, count_dict, sorted_by_value, pick_length, candidate_batch, random_select_batch)
+ batch = candidate_batch + random_select_batch
+ # print(batch)
+
+ for i in range(1, len(batch)-1):
+ # if not lengths[batch[0]] == lengths[batch[i]]:
+ # print(batch, [lengths[i] for i in batch])
+ # import ipdb;ipdb.set_trace()
+ assert lengths[batch[0]] == lengths[batch[i]]
+ re_megabatch.append(batch)
+ re_shuffled_megabatches.append(re_megabatch)
+
+
+ # for megabatch, re_megabatch in zip(shuffled_megabatches, re_shuffled_megabatches):
+ # for batch, re_batch in zip(megabatch, re_megabatch):
+ # for i, re_i in zip(batch, re_batch):
+ # if i != re_i:
+ # print(i, re_i)
+ return re_shuffled_megabatches
+
+def split_to_even_chunks(megabatch, lengths, world_size, batch_size):
+ """
+ Split a list of indices into `chunks` chunks of roughly equal lengths.
+ """
+ # batch_size=2, world_size=2
+ # [1, 2, 3, 4] -> [[1, 2], [3, 4]]
+ # [1, 2, 3] -> [[1, 2], [3]]
+ # [1, 2] -> [[1], [2]]
+ # [1] -> [[1], []]
+ chunks = [megabatch[i::world_size] for i in range(world_size)]
+
+ pad_chunks = []
+ for idx, chunk in enumerate(chunks):
+ if batch_size != len(chunk):
+ assert batch_size > len(chunk)
+ if len(chunk) != 0: # [[1, 2], [3]] -> [[1, 2], [3, 3]]
+ chunk = chunk + [random.choice(chunk) for _ in range(batch_size - len(chunk))]
+ else:
+ chunk = random.choice(pad_chunks) # [[1], []] -> [[1], [1]]
+ print(chunks[idx], '->', chunk)
+ pad_chunks.append(chunk)
+ return pad_chunks
+
+def get_length_grouped_indices(lengths, batch_size, world_size, gradient_accumulation_size, initial_global_step, generator=None, group_data=False, seed=42):
+ # We need to use torch for the random part as a distributed sampler will set the random seed for torch.
+ if generator is None:
+ generator = torch.Generator().manual_seed(seed) # every rank will generate a fixed order but random index
+ # print('lengths', lengths)
+
+ if group_data:
+ indices = group_data_fun(lengths, generator)
+ else:
+ indices = torch.randperm(len(lengths), generator=generator).tolist()
+
+ megabatch_size = world_size * batch_size
+ megabatches = [indices[i: i + megabatch_size] for i in range(0, len(lengths), megabatch_size)]
+
+ megabatches_len = [[lengths[i] for i in megabatch] for megabatch in megabatches]
+
+ megabatches = [split_to_even_chunks(megabatch, lengths, world_size, batch_size) for megabatch in megabatches]
+
+ split_to_even_chunks_len = [[[lengths[i] for i in batch] for batch in megabatch] for megabatch in megabatches]
+
+ indices_mega = torch.randperm(len(megabatches), generator=generator).tolist()
+ # print(f'rank {accelerator.process_index} seed {seed}, len(megabatches) {len(megabatches)}, indices_mega, {indices_mega[:50]}')
+ shuffled_megabatches = [megabatches[i] for i in indices_mega]
+ shuffled_megabatches_len = [[[lengths[i] for i in batch] for batch in megabatch] for megabatch in shuffled_megabatches]
+ # print(f'\nrank {accelerator.process_index} sorted shuffled_megabatches_len', shuffled_megabatches_len[0], shuffled_megabatches_len[1], shuffled_megabatches_len[-2], shuffled_megabatches_len[-1])
+
+ # import ipdb;ipdb.set_trace()
+ # print('shuffled_megabatches', len(shuffled_megabatches))
+ if group_data:
+ shuffled_megabatches = last_group_data_fun(shuffled_megabatches, lengths)
+ group_shuffled_megabatches_len = [[[lengths[i] for i in batch] for batch in megabatch] for megabatch in shuffled_megabatches]
+ # print(f'\nrank {accelerator.process_index} group_shuffled_megabatches_len', group_shuffled_megabatches_len[0], group_shuffled_megabatches_len[1], group_shuffled_megabatches_len[-2], group_shuffled_megabatches_len[-1])
+
+
+ #initial_global_step = initial_global_step * gradient_accumulation_size #todo
+
+ shuffled_megabatches = shuffled_megabatches[initial_global_step:]
+ #print(f'Skip the data of {initial_global_step} step!')
+
+ return [batch for megabatch in shuffled_megabatches for batch in megabatch]
+
+class LengthGroupedSampler(Sampler):
+ r"""
+ Sampler that samples indices in a way that groups together features of the dataset of roughly the same length while
+ keeping a bit of randomness.
+ """
+
+ def __init__(
+ self,
+ batch_size: int,
+ world_size: int,
+ gradient_accumulation_size: int = 1,
+ initial_global_step: int = 0,
+ lengths: Optional[List[int]] = None,
+ group_data=False,
+ generator=None,
+ rank: Optional[int] = None,
+ seed: int = 0,
+ ):
+ if lengths is None:
+ raise ValueError("Lengths must be provided.")
+
+ self.batch_size = batch_size
+ self.world_size = world_size
+ self.initial_global_step = initial_global_step
+ self.gradient_accumulation_size = gradient_accumulation_size
+ self.lengths = lengths
+ self.group_data = group_data
+ self.generator = generator
+
+ self.rank = rank
+ self.epoch = 0
+
+ self.seed = seed
+
+ megabatch_size = self.batch_size * self.world_size
+ self.num_samples = ((len(lengths) + megabatch_size - 1) // megabatch_size ) * self.batch_size #todo
+ #self.num_samples = self.num_samples #- self.initial_global_step * self.batch_size * self.gradient_accumulation_size
+ # print('self.lengths, self.initial_global_step, self.batch_size, self.world_size, self.gradient_accumulation_size',
+ # len(self.lengths), self.initial_global_step, self.batch_size, self.world_size, self.gradient_accumulation_size)
+
+ def __len__(self):
+ return self.num_samples
+
+ def __iter__(self):
+ g = torch.Generator()
+ g.manual_seed(self.seed + self.epoch)
+ megabatch_indices = get_length_grouped_indices(self.lengths, self.batch_size, self.world_size,
+ self.gradient_accumulation_size, self.initial_global_step,
+ group_data=self.group_data, generator=g)
+
+ # subsample
+ indices = [i for batch in megabatch_indices[self.rank::self.world_size] for i in batch]
+ assert len(indices) == self.num_samples
+
+ return iter(indices)
+
+ def set_epoch(self, epoch: int) -> None:
+ r"""
+ Set the epoch for this sampler.
+
+ When :attr:`shuffle=True`, this ensures all replicas
+ use a different random ordering for each epoch. Otherwise, the next iteration of this
+ sampler will yield the same ordering.
+
+ Args:
+ epoch (int): Epoch number.
+ """
+ self.epoch = epoch
+
+
+class VideoData(pl.LightningDataModule):
+ def __init__(self, args):
+ super().__init__()
+ self.args = args
+
+ def _dataset(self, train):
+ datasets = []
+ for dataset_path, train_list, val_list in zip(self.args.data_path, self.args.train_datalist, self.args.val_datalist):
+
+ dataset = MultiSizeVideoDataset(data_folder=dataset_path, data_list=train_list if train else val_list, sequence_length=self.args.sequence_length,
+ train=train, sample_rate=self.args.sample_rate, dynamic_sample=self.args.dynamic_sample)
+ datasets.append(dataset)
+ return datasets
+
+ def _dataloader(self, train, steps = 0, batch_size = None):
+ dataset = self._dataset(train)
+ if isinstance(self.args.batch_size, int):
+ self.args.batch_size = [self.args.batch_size]
+ self.batch_size = self.args.batch_size if batch_size is None else batch_size
+ assert len(dataset) == len(self.args.batch_size)
+ dataloaders = []
+ for dset, d_batch_size in zip(dataset, self.batch_size):
+ if dist.is_initialized():
+ sampler = LengthGroupedSampler(
+ batch_size=d_batch_size,
+ world_size=dist.get_world_size(),
+ gradient_accumulation_size=1,
+ initial_global_step=steps if train else 0,
+ lengths=dset.lengths,
+ group_data=True,
+ rank = dist.get_rank()
+ )
+ else:
+ sampler = None
+
+ dataloader = data.DataLoader(
+ dset,
+ batch_size=d_batch_size,
+ num_workers=self.args.num_workers if train else 0,
+ pin_memory=False,
+ sampler=sampler,
+ )
+
+ dataloaders.append(dataloader)
+
+ return dataloaders
+
+ def train_dataloader(self):
+ return self._dataloader(True)
+
+ def val_dataloader(self):
+ return self._dataloader(False)[0]
+
+
+ @staticmethod
+ def add_data_specific_args(parent_parser):
+ parser = argparse.ArgumentParser(parents=[parent_parser], add_help=False)
+ parser.add_argument('--data_path', type=str, nargs="+", default=[''])
+ parser.add_argument('--train_datalist', type=str, nargs="+", default=['./video/kinetics-dataset/train/datapath'])
+ parser.add_argument('--val_datalist', type=str, nargs="+", default=['./video/kinetics-dataset/val/datapath'])
+
+ parser.add_argument('--sequence_length', type=int, default=17)
+ parser.add_argument('--sample_rate', type=int, default=1,
+ help='Frame sampling rate')
+ parser.add_argument('--dynamic_sample', action='store_true',
+ help='Enable dynamic sampling rate')
+
+ parser.add_argument('--batch_size', type=int, nargs="+", default=[5])
+ parser.add_argument('--num_workers', type=int, default=8)
+ return parser
+
+if __name__ == "__main__":
+ import os
+ def lines(file_path):
+ with open(file_path, 'r') as file:
+ return sum(1 for line in file)
+ train_folder ='./kinetics-dataset/datapath'
+ lengths_dict = {file_name: lines(os.path.join(train_folder, file_name)) for file_name in os.listdir(train_folder)}
+ lengths = []
+ for k, v in lengths_dict.items():
+ lengths += [k] * min(v, 50) #(v % 7)
+ world_size = 4
+ sampler = []
+ batch_size = 10
+ for rank in range(world_size):
+ sampler.append(LengthGroupedSampler(
+ batch_size=batch_size,
+ world_size=world_size,
+ gradient_accumulation_size=1,
+ initial_global_step=0,
+ lengths=lengths,
+ group_data=True,
+ rank = rank
+ ))
+
+
+ with open('./sampler.txt', 'w') as f:
+ for epoch in range(5):
+ rank_idx = {}
+ bk = []
+ print(f'epoch -------------------------------------- {epoch} ----------------------------------------------------', file=f)
+ for rank in range(world_size):
+ sl = sampler[rank]
+ sl.set_epoch(epoch)
+ for i in iter(sl):
+ bk.append(i)
+ if len(bk) == batch_size:
+ rank_idx.setdefault(f'rank_{rank}', [])
+ rank_idx[f'rank_{rank}'].append(bk)
+ bk = []
+ for num in range(5):
+ print('*'*5 + f'steps {num}' + '*'*5, file=f)
+ for rank, bk in rank_idx.items():
+ print(f'rank {rank}: {bk[num]}', file=f)
+ print([lengths[i] for i in bk[num]], file=f)
+
+
+ exit()
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1f617b5f6a2abb55e289b5352460ff38ae3eb4bd
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ae05f32bdd356876e3a7bd5373b9875e4f754575
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ac5c652d9e20b7c41e8c9ed40349ee1a273ccb94
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..df463c9449153a56a352afb16a64da98cba34917
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8bfbf89cc13c7a32676a39dee046a2d3d1ff61ec
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..37c1259114964e24b85a7a70de96876558351453
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/__pycache__/autoencoder_pl.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..55e028a445e9a4fcf4774d555c4bcecfea3b731c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder.py
@@ -0,0 +1,186 @@
+import argparse
+import torch
+import torch.distributed
+import torch.nn as nn
+import torch.nn.functional as F
+from einops import rearrange
+from ..modules import DiagonalGaussianDistribution, Encoder_Arch, Decoder_Arch, ISTA
+from ..utils.patcher_utils import Patcher, UnPatcher
+
+class LeanVAE(nn.Module):
+ def __init__(self, args):
+ super().__init__()
+ self.args = args
+ self.embedding_dim = args.embedding_dim
+
+ self.latent_bottleneck = ISTA(points_num=args.embedding_dim, out_num=args.latent_dim, iter_num=args.ista_iter_num, layer_num=args.ista_layer_num)
+
+ self.dwt = Patcher()
+ self.idwt = UnPatcher()
+
+ self.encoder = Encoder_Arch(l_dim = args.l_dim, h_dim = args.h_dim, sep_num_layer = args.sep_num_layer, fusion_num_layer = args.fusion_num_layer)
+ self.decoder = Decoder_Arch(l_dim = args.l_dim, h_dim = args.h_dim, sep_num_layer = args.sep_num_layer, fusion_num_layer = args.fusion_num_layer)
+
+ self.std_layer = nn.Linear(args.embedding_dim, args.latent_dim)
+
+ self.tile_inference = False
+ self.chunksize_enc = args.chunksize_enc if hasattr(args, 'chunksize_enc') and args.chunksize_enc else 5
+ self.chunksize_dec = args.chunksize_dec if hasattr(args, 'chunksize_dec') and args.chunksize_dec else 5
+ if args.use_tile_inference:
+ self.set_tile_inference(True)
+ else:
+ self.set_tile_inference(False)
+
+ def _set_first_chunk(self, is_first_chunk=True):
+ for module in self.modules():
+ if hasattr(module, 'is_first_chunk'):
+ module.is_first_chunk = is_first_chunk
+
+ def set_tile_inference(self, tile_inference=False):
+ for module in self.modules():
+ if hasattr(module, 'tile_inference'):
+ module.tile_inference = tile_inference
+
+ def _build_chunk_index(self, T = 17, mtype = 'enc'):
+ start_end = []
+ if mtype == 'enc':
+ chunksize = self.chunksize_enc
+ else:
+ chunksize = self.chunksize_dec
+ if T >= chunksize :
+ start_end.append((0, chunksize))
+ start_idx = chunksize
+ else:
+ assert T < chunksize
+
+ for i in range(start_idx, T, chunksize-1):
+ end_idx = min(i + chunksize -1, T)
+ start_end.append((i, end_idx))
+ return start_end
+
+ def encode(self, x):
+ ndim = x.ndim
+ if ndim == 4:
+ x = x.unsqueeze(2)
+ self.set_tile_inference(False)
+
+ if self.tile_inference:
+ z = []
+ chunk_indexs = self._build_chunk_index(T=x.shape[2], mtype='enc')
+ for idx, (start, end) in enumerate(chunk_indexs):
+ if idx == 0:
+ self._set_first_chunk(True)
+ else:
+ self._set_first_chunk(False)
+
+ x_dwt = self.dwt(x[:, :, start:end])
+ p = self.encoder.encode(x=x_dwt)
+ z.append(self.latent_bottleneck.sample(p))
+ z = torch.cat(z, dim = 1)
+ else:
+ x_dwt = self.dwt(x)
+ p = self.encoder.encode(x=x_dwt)
+ z = self.latent_bottleneck.sample(p)
+
+ z = rearrange(z, 'b t h w d -> b d t h w')
+ return z
+
+ def decode(self, z, is_image = False):
+ z = rearrange(z, 'b d t h w -> b t h w d')
+ if is_image:
+ self.set_tile_inference(False)
+ if self.tile_inference:
+ x_recon = []
+ chunk_indexs = self._build_chunk_index(T=z.shape[1], mtype='dec')
+ for idx, (start, end) in enumerate(chunk_indexs):
+ if idx == 0:
+ self._set_first_chunk(True)
+ else:
+ self._set_first_chunk(False)
+ p_rec = self.latent_bottleneck.recon(z[:, start:end])
+ x_dwt_rec = self.decoder.decode(p_rec, is_image=is_image)
+
+ x_recon.append(self.idwt(x=x_dwt_rec))
+ x_recon = torch.cat(x_recon, dim = 2)
+ else:
+ p_rec = self.latent_bottleneck.recon(z)
+ x_dwt_rec = self.decoder.decode(p_rec, is_image=is_image)
+
+ x_recon = self.idwt(x=x_dwt_rec)
+
+ return x_recon
+
+
+
+ @torch.no_grad()
+ def inference(self, x):
+ if x.ndim == 4 :
+ is_image = True
+ else:
+ is_image = False
+ assert x.shape[2] % 4 == 1, f"Expected frame_num % 4 == 1, but got {x.shape[2] % 4}"
+
+ z = self.encode(x)
+ x_recon = self.decode(z, is_image=is_image)
+
+ if is_image:
+ x = x.squeeze(2)
+ return x, x_recon
+
+ def forward(self, x, log_image=False):
+ x_dwt = self.dwt(x)
+ p = self.encoder(x=x_dwt)
+ z_mean = self.latent_bottleneck.sample(p)
+ z_std = self.std_layer(p)
+
+ posterior = DiagonalGaussianDistribution(parameters=(z_mean, z_std))
+ z = posterior.sample()
+ p_rec = self.latent_bottleneck.recon(z)
+
+ x_dwt_rec = self.decoder(p_rec) #b c t h w
+
+
+ x_recon = self.idwt(x=x_dwt_rec)
+
+ if log_image:
+ return x, x_recon
+
+ return x, x_recon, x_dwt, x_dwt_rec, posterior
+
+
+ @classmethod
+ def load_from_checkpoint(cls, ckpt_path, device="cpu", strict=False):
+ """ Load model from checkpoint, initializing args and state_dict """
+ checkpoint = torch.load(ckpt_path, map_location=device)
+
+ if "args" not in checkpoint:
+ raise ValueError("Checkpoint does not contain 'args'. Ensure the checkpoint is saved correctly.")
+
+ args = argparse.Namespace(**checkpoint["args"])
+
+ model = cls(args)
+ if "state_dict" in checkpoint:
+ msg = model.load_state_dict(checkpoint["state_dict"], strict=strict)
+ print(f"Successfully loaded weights from {ckpt_path}, {msg}")
+ return model
+
+ @staticmethod
+ def add_model_specific_args(parent_parser):
+ parser = argparse.ArgumentParser(parents=[parent_parser], add_help=False)
+
+ # Model architecture parameters
+ parser.add_argument("--embedding_dim", type=int, default=512, help="Dimension of the embedding space.")
+ parser.add_argument("--latent_dim", type=int, default=4, help="Dimension of the latent channel.")
+ parser.add_argument("--ista_iter_num", type=int, default=2, help="Number of iterations in ISTA latent bottleneck.")
+ parser.add_argument("--ista_layer_num", type=int, default=2, help="Number of layers in ISTA latent bottleneck.")
+
+ parser.add_argument("--l_dim", type=int, default=128)
+ parser.add_argument("--h_dim", type=int, default=384)
+ parser.add_argument("--sep_num_layer", type=int, default=2, help="Number of separate processing layers in encoder/decoder.")
+ parser.add_argument("--fusion_num_layer", type=int, default=4, help="Number of fusion layers in encoder/decoder.")
+
+ # Tiling inference (for memory-efficient processing)
+ parser.add_argument("--use_tile_inference", action="store_true", help="Enable tiling inference to process video in chunks.")
+ parser.add_argument("--chunksize_enc", type=int, default=9, help="Number of frames per chunk during tiled encoding.")
+ parser.add_argument("--chunksize_dec", type=int, default=5, help="Number of frames per chunk during tiled decoding.")
+ return parser
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder_pl.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder_pl.py
new file mode 100644
index 0000000000000000000000000000000000000000..96b58ae98017752e18b096e985e18650b65668be
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/models/autoencoder_pl.py
@@ -0,0 +1,232 @@
+import argparse
+import numpy as np
+from PIL import Image
+import pytorch_lightning as pl
+import torch
+import torch.distributed
+import torch.nn as nn
+import torch.nn.functional as F
+from timm.scheduler.cosine_lr import CosineLRScheduler
+from timm.models.layers import trunc_normal_
+from .autoencoder import LeanVAE
+from ..modules import LPIPS
+from ..utils.gan_loss import AdversarialLoss
+
+class AutoEncoderEngine(pl.LightningModule):
+ def __init__(self, args, data):
+ super().__init__()
+ self.args = args
+ self.video_data = data
+
+ self.autoencoder = LeanVAE(args=args)
+
+ self.automatic_optimization = False
+ self.kl_weight = args.kl_weight
+ self.discriminator_iter_start = args.discriminator_iter_start
+
+ self.perceptual_weight = args.perceptual_weight
+ self.l1_weight = args.l1_weight
+
+ self.automatic_optimization = False
+ self.grad_clip_val = args.grad_clip_val
+
+ if not hasattr(args, "grad_clip_val_disc"):
+ args.grad_clip_val_disc = 1.0
+
+ self.grad_clip_val_disc = args.grad_clip_val_disc
+
+ self.apply(self._init_weights)
+ self.perceptual_model = LPIPS().eval()
+ self.perceptual_model.requires_grad_(False)
+ self.gan_loss = AdversarialLoss(disc_weight=args.disc_weight)
+ self.save_hyperparameters()
+
+ def _init_weights(self, m):
+ if isinstance(m, nn.Linear):
+ trunc_normal_(m.weight, std=.02)
+ if isinstance(m, nn.Linear) and m.bias is not None:
+ nn.init.constant_(m.bias, 0)
+ elif isinstance(m, nn.LayerNorm):
+ if m.bias is not None:
+ nn.init.constant_(m.bias, 0)
+ if m.weight is not None:
+ nn.init.constant_(m.weight, 1.0)
+
+ elif isinstance(m, nn.Conv3d) or isinstance(m, nn.Conv2d):
+ nn.init.xavier_uniform_(m.weight)
+ nn.init.zeros_(m.bias)
+
+
+ def forward(self, x, optimizer_idx=None, x_recon = None, log_image=False):
+ if log_image:
+ return self.autoencoder(x, log_image)
+
+ if optimizer_idx == 1:
+ discloss = self.gan_loss(inputs=x, reconstructions=x_recon, optimizer_idx=1)
+ self.log("train/discloss", discloss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ return discloss
+
+ elif optimizer_idx == 0:
+ assert x.ndim == 5
+ B, C, T, H, W = x.shape
+ x, x_recon, x_dwt, x_dwt_rec, posterior = self.autoencoder(x)
+ recon_loss = F.l1_loss(x_recon, x)* self.l1_weight
+ kl_loss = posterior.kl()
+ kl_loss = torch.sum(kl_loss) / kl_loss.shape[0] * self.kl_weight
+
+ g_loss = 0.0
+ if self.global_step >= self.discriminator_iter_start:
+ g_loss = self.gan_loss(x, x_recon, optimizer_idx=0)
+ self.log("train/g_loss", g_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+
+ recon_loss_low = (F.l1_loss(x_dwt_rec[0][:, :3], x_dwt[0][:, :3]) + F.l1_loss(x_dwt_rec[1][:, :3], x_dwt[1][:, :3])) * self.l1_weight * 0.05
+ recon_loss_high = (F.l1_loss(x_dwt_rec[0][:, 3:], x_dwt[0][:, 3:])+ F.l1_loss(x_dwt_rec[1][:, 3:], x_dwt[1][:, 3:])) * self.l1_weight * 0.1
+
+ k = 4
+ valid_start_indices = torch.tensor([x for x in range(T - k + 1) if x % 4 == 1])
+ start_idx = valid_start_indices[torch.randint(0, len(valid_start_indices), (B,))]
+ frame_idx = start_idx.unsqueeze(1) + torch.arange(k)
+ frame_idx = torch.cat((torch.zeros((B, 1), dtype=torch.int), frame_idx), dim=1).to(self.device)
+
+ frame_idx_selected = frame_idx.reshape(-1, 1, k+1, 1, 1).repeat(1, C, 1, H, W)
+ frames = torch.gather(x, 2, frame_idx_selected)
+ frames_recon = torch.gather(x_recon, 2, frame_idx_selected)
+ frames = frames.permute(0, 2, 1, 3, 4).contiguous().view(-1, 3, H, W)
+ frames_recon = frames_recon.permute(0, 2, 1, 3, 4).contiguous().view(-1, 3, H, W)
+ perceptual_loss = self.perceptual_model(frames, frames_recon).mean() * self.perceptual_weight
+
+ self.log("train/recon_loss", recon_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log("train/kl_loss", kl_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log("train/recon_loss_low", recon_loss_low, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log("train/recon_loss_high", recon_loss_high, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log("train/perceptual_loss", perceptual_loss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ return perceptual_loss + recon_loss + recon_loss_low + recon_loss_high + kl_loss + g_loss, x_recon
+
+ return perceptual_loss, recon_loss, kl_loss
+
+
+ def training_step(self, batch, batch_idx):
+
+ x = batch[0]['video']
+ cur_global_step = self.global_step
+
+ sch1, sch2 = self.lr_schedulers()
+ opt1, opt2 = self.optimizers()
+
+ cur_global_step = self.global_step
+
+ self.toggle_optimizer(opt1, optimizer_idx=0)
+ loss_generator, x_recon = self.forward(x, optimizer_idx=0)
+ opt1.zero_grad()
+ self.manual_backward(loss_generator)
+ if self.grad_clip_val is not None:
+ self.clip_gradients(opt1, gradient_clip_val=self.grad_clip_val)
+ opt1.step()
+ sch1.step(cur_global_step)
+ self.untoggle_optimizer(optimizer_idx=0)
+
+ if cur_global_step > self.discriminator_iter_start:
+ self.toggle_optimizer(opt2, optimizer_idx=1)
+ loss_discriminator = self.forward(x, optimizer_idx=1, x_recon=x_recon)
+
+ opt2.zero_grad()
+ self.manual_backward(loss_discriminator)
+
+ if self.grad_clip_val_disc is not None:
+ self.clip_gradients(opt2, gradient_clip_val=self.grad_clip_val_disc)
+ opt2.step()
+ sch2.step(cur_global_step)
+ self.untoggle_optimizer(optimizer_idx=1)
+
+
+ def validation_step(self, batch, batch_idx):
+ x = batch['video']
+ perceptual_loss, recon_loss, kl_loss = self.forward(x)
+ self.log('val/recon_loss', recon_loss, prog_bar=True)
+ self.log('val/perceptual_loss', perceptual_loss, prog_bar=True)
+ self.log("val/kl_loss", kl_loss, prog_bar=True)
+
+ def train_dataloader(self):
+ dataloaders = self.video_data._dataloader(train=True)
+ return dataloaders
+
+ def val_dataloader(self):
+ return self.video_data._dataloader(False)[0]
+
+ def configure_optimizers(self):
+ opt_ae = torch.optim.Adam(self.autoencoder.parameters(),
+ lr=self.args.lr, betas=(0.5, 0.9))
+
+ opt_disc = torch.optim.Adam(
+ self.gan_loss.get_trainable_parameters(),
+ lr=self.args.lr_min, betas=(0.5, 0.9))
+
+ lr_min = self.args.lr_min
+ train_iters = self.args.max_steps - self.discriminator_iter_start
+ warmup_steps = self.args.warmup_steps
+ warmup_lr_init = self.args.warmup_lr_init
+
+
+ sch_ae = CosineLRScheduler(
+ opt_ae,
+ lr_min = lr_min,
+ t_initial = train_iters,
+ warmup_lr_init=warmup_lr_init,
+ warmup_t=warmup_steps,
+ cycle_mul = 1.,
+ cycle_limit=1,
+ t_in_epochs=True,
+ )
+
+ sch_disc = CosineLRScheduler(
+ opt_disc,
+ lr_min = lr_min ,
+ t_initial = train_iters,
+ warmup_lr_init=warmup_lr_init,
+ warmup_t= self.args.dis_warmup_steps,
+ cycle_mul = 1.,
+ cycle_limit=1,
+ t_in_epochs=True,
+ )
+
+
+ return [opt_ae, opt_disc], [{"scheduler": sch_ae, "interval": "step"}, {"scheduler": sch_disc, "interval": "step"}]
+
+
+
+ def log_videos(self, batch, **kwargs):
+ log = dict()
+ if isinstance(batch, list):
+ batch = batch[0]
+ x = batch['video']
+ x, x_rec = self(x, log_image=True)
+ log["inputs"] = x
+ log["reconstructions"] = x_rec
+ return log
+
+ @staticmethod
+ def add_model_specific_args(parent_parser):
+ parser = argparse.ArgumentParser(parents=[parent_parser], add_help=False)
+
+ # training configurations
+ parser.add_argument('--lr', type=float, default=5e-5)
+ parser.add_argument('--lr_min', type=float, default=1e-5)
+ parser.add_argument('--warmup_steps', type=int, default=5000)
+ parser.add_argument('--warmup_lr_init', type=float, default=0.)
+ parser.add_argument('--grad_clip_val', type=float, default=1.0)
+ parser.add_argument('--grad_clip_val_disc', type=float, default=1.0)
+
+
+ parser.add_argument('--kl_weight', type=float, default=1e-7)
+ parser.add_argument('--perceptual_weight', type=float, default=4.)
+ parser.add_argument('--l1_weight', type=float, default=4.)
+ parser.add_argument('--disc_weight', type=float, default=0.2)
+
+ # configuration for discriminator
+ parser.add_argument('--dis_warmup_steps', type=int, default=0)
+ parser.add_argument('--discriminator_iter_start', type=int, default=0)
+ parser.add_argument('--dis_lr_multiplier', type=float, default=1.)
+
+ return parser
+
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..72c215a154db4c7fd24fff62fcc897712e5339ed
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__init__.py
@@ -0,0 +1,3 @@
+from .lpips import LPIPS
+from .backbones import *
+from .vae import DiagonalGaussianDistribution
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e7f3a5298b6a10e1f5634d1f5c64c619def31d68
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ff1fdc23d4232b90c50a1fab293a4d68d29f74f4
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..777b6f693761438bd9063db09e92669d7a279297
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d1139437363db0829513b50a89ed14f5dc35500b
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fe435972222e62a8c2d97a38c11b8a742fe71511
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dfeb9443cbfb7e076b27f5d6891c64171b8d4f80
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/backbones.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..929d70ec1dcd79adc745d497f5376b2516ba5110
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3f273df41df605b69d17617d0692247c9ee7c676
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f7368a40f5cfcd4a195f83c4b3c6b3bc83bcad47
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/discriminator.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c4156fc36adacdf693d7006f30382da85de0af65
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..877219b76698e42ff1a8145c0a3a84a79bb6f8e3
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5e1b110f33914e838a427c2da60d16f5e3362383
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/lpips.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1c5cd84df9b2f0fc13981d8e1b16c65aa2d69875
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8ac7563bcc3e9a477cd0142d5a19f32dbe49d25e
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..11e65e4b8d20aedff6393fbd31068d9fffcc9700
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/__pycache__/vae.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/backbones.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/backbones.py
new file mode 100644
index 0000000000000000000000000000000000000000..606edd41e164046c71da3ba2a9d540fbe9341abc
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/backbones.py
@@ -0,0 +1,402 @@
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from beartype import beartype
+from typing import Tuple
+from einops import rearrange, repeat
+from einops.layers.torch import Rearrange
+import numpy as np
+
+def exists(val):
+ return val is not None
+
+def default(val, d):
+ if exists(val):
+ return val
+ return d() if callable(d) else d
+
+class PEG3D(nn.Module):
+ def __init__(
+ self,
+ dim
+ ):
+ super().__init__()
+ self.ds_conv = nn.Conv3d(in_channels=dim, out_channels=dim, kernel_size=(3,3,3), groups = dim)
+ self.is_first_chunk = True
+ self.causal_cached = None
+ self.tile_inference = False
+
+ def forward(self, x):
+ x = rearrange(x, 'b t h w d -> b d t h w')
+ if self.tile_inference:
+ if self.is_first_chunk:
+ x = F.pad(x, (1, 1, 1, 1, 2, 0), value=0.)
+ else:
+ x = F.pad(x, (1, 1, 1, 1, 0, 0), value=0.)
+ x = torch.concatenate((self.causal_cached, x), dim=2)
+
+ self.causal_cached = x[:, :, -2:].clone()
+ else:
+ x = F.pad(x, (1, 1, 1, 1, 2, 0), value=0.)
+ x = self.ds_conv(x.contiguous())
+ x = rearrange(x, 'b d t h w -> b t h w d')
+ return x
+
+
+class GEGLU(nn.Module):
+ def forward(self, x):
+ x, gate = x.chunk(2, dim=-1)
+ return F.gelu(gate) * x
+
+
+def ffd(dim, mult=4, dropout=0.):
+ inner_dim = int(mult * (2 / 3) * dim)
+ return nn.Sequential(
+ nn.LayerNorm(dim),
+ nn.Linear(dim, inner_dim * 2, bias=False),
+ GEGLU(),
+ nn.Dropout(dropout),
+ nn.Linear(inner_dim, dim, bias=False)
+ )
+
+
+class NAF(nn.Module):
+ def __init__(self,
+ num_layer,
+ dim,
+ ):
+ super(NAF, self).__init__()
+ self.num_layer = num_layer
+ self.dconv_layer = nn.Sequential()
+ self.ffd_layer = nn.Sequential()
+ for _ in range(num_layer):
+ self.ffd_layer.append(ffd(dim, 4))
+ self.dconv_layer.append(PEG3D(dim))
+
+ def forward(self, x):
+ for i in range(self.num_layer):
+ x = self.dconv_layer[i](x)
+ x = self.ffd_layer[i](x)
+ return x
+
+
+class ResNAF(nn.Module):
+ def __init__(self,
+ num_layer,
+ dim,
+ ):
+ super(ResNAF, self).__init__()
+ self.num_layer = num_layer
+ self.dconv_layer = nn.Sequential()
+ self.ffd_layer = nn.Sequential()
+ for _ in range(num_layer):
+ self.ffd_layer.append(ffd(dim, 4))
+ self.dconv_layer.append(PEG3D(dim))
+
+ def forward(self, x):
+ for i in range(self.num_layer):
+ x = x + self.dconv_layer[i](x)
+ x = x + self.ffd_layer[i](x)
+ return x
+
+
+class Encoder_Arch(nn.Module):
+ def __init__(self,
+ l_dim = 128,
+ h_dim = 384,
+ sep_num_layer = 2,
+ fusion_num_layer = 4,
+ patch_size = (2,4,4),
+ in_channel = 3
+ ):
+ super(Encoder_Arch, self).__init__()
+
+ self.is_first_chunk = True
+ self.tile_inference = False
+
+ self.in_channel = in_channel
+
+ self._build_linear_patch(in_channel=in_channel, out_channel_low=l_dim, out_channel_high=h_dim, pt=patch_size[0], ph=patch_size[1], pw=patch_size[2])
+
+ self.low_layer = ResNAF(num_layer=sep_num_layer, dim=l_dim)
+ self.high_layer = ResNAF(num_layer=sep_num_layer, dim=h_dim)
+ self.fusion_layer = ResNAF(num_layer=fusion_num_layer, dim=l_dim + h_dim)
+
+ def _build_linear_patch(self, in_channel = 3, out_channel_low = 128, out_channel_high = 384, pt = 2, ph = 4, pw = 4):
+ patch_config = {
+ 'video_low': (pt, ph, pw),
+ 'video_high': (pt, ph, pw),
+ 'image_low': (1, ph, pw),
+ 'image_high': (1, ph, pw)
+ }
+
+ for name, (t, h, w) in patch_config.items():
+ if 'low' in name:
+ in_dim = in_channel * t * h * w
+ out_dim = out_channel_low
+ else:
+ out_dim = out_channel_high
+ in_dim = in_channel * t * h * w * 7 if 'video' in name else in_channel * t * h * w * 3
+ proj = nn.Sequential(
+ Rearrange(f'b c (nt {t}) (nh {h}) (nw {w}) -> b nt nh nw (c {t} {h} {w})' if 'video' in name else f'b c (nh {h}) (nw {w}) -> b 1 nh nw (c {h} {w})'),
+ nn.Linear(in_dim, out_dim)
+ )
+ self.add_module(f"{name}_proj", proj)
+
+
+ def _linear_patch(self, x, proj_type):
+ low_comp, high_comp = x[:, :self.in_channel], x[:, self.in_channel:]
+ return getattr(self, f"{proj_type}_low_proj")(low_comp), getattr(self, f"{proj_type}_high_proj")(high_comp)
+
+ def forward(self, x):
+ xi, xv = x
+ xi_low, xi_high = self._linear_patch(xi, 'image')
+ xv_low, xv_high = self._linear_patch(xv, 'video')
+
+ low_x = torch.cat([xi_low, xv_low], dim=1)
+ high_x = torch.cat([xi_high, xv_high], dim=1)
+
+ high_x = self.high_layer(high_x)
+ low_x = self.low_layer(low_x)
+ x = torch.cat([low_x, high_x], dim=-1)
+ x = self.fusion_layer(x)
+ return x
+
+
+
+ def encode(self, x):
+ xi, xv = x
+ if xi is not None and xv is not None:
+ xi_low, xi_high = self._linear_patch(xi, 'image')
+ xv_low, xv_high = self._linear_patch(xv, 'video')
+
+ low_x = torch.cat([xi_low, xv_low], dim=1)
+ high_x = torch.cat([xi_high, xv_high], dim=1)
+ elif xi is not None:
+ low_x, high_x = self._linear_patch(xi, 'image')
+ elif xv is not None:
+ low_x, high_x = self._linear_patch(xv, 'video')
+
+ high_x = self.high_layer(high_x)
+ low_x = self.low_layer(low_x)
+ x = torch.cat([low_x, high_x], dim=-1)
+ x = self.fusion_layer(x)
+ return x
+
+
+
+class Encoder_Arch(nn.Module):
+ def __init__(self,
+ l_dim = 128,
+ h_dim = 384,
+ sep_num_layer = 2,
+ fusion_num_layer = 4,
+ patch_size = (2,4,4),
+ in_channel = 3
+ ):
+ super(Encoder_Arch, self).__init__()
+
+ self.is_first_chunk = True
+ self.tile_inference = False
+
+ self.in_channel = in_channel
+
+ self._build_linear_patch(in_channel=in_channel, out_channel_low=l_dim, out_channel_high=h_dim, pt=patch_size[0], ph=patch_size[1], pw=patch_size[2])
+
+ self.low_layer = ResNAF(num_layer=sep_num_layer, dim=l_dim)
+ self.high_layer = ResNAF(num_layer=sep_num_layer, dim=h_dim)
+ self.fusion_layer = ResNAF(num_layer=fusion_num_layer, dim=l_dim + h_dim)
+
+ def _build_linear_patch(self, in_channel = 3, out_channel_low = 128, out_channel_high = 384, pt = 2, ph = 4, pw = 4):
+ patch_config = {
+ 'video_low': (pt, ph, pw),
+ 'video_high': (pt, ph, pw),
+ 'image_low': (1, ph, pw),
+ 'image_high': (1, ph, pw)
+ }
+
+ for name, (t, h, w) in patch_config.items():
+ if 'low' in name:
+ in_dim = in_channel * t * h * w
+ out_dim = out_channel_low
+ else:
+ out_dim = out_channel_high
+ in_dim = in_channel * t * h * w * 7 if 'video' in name else in_channel * t * h * w * 3
+ proj = nn.Sequential(
+ Rearrange('b c (nt pt) (nh ph) (nw pw) -> b nt nh nw (c pt ph pw)', pt=t, ph=h, pw=w),
+ nn.Linear(in_dim, out_dim)
+ )
+ self.add_module(f"{name}_proj", proj)
+
+
+ def _linear_patch(self, x, proj_type):
+ low_comp, high_comp = x[:, :self.in_channel], x[:, self.in_channel:]
+ return getattr(self, f"{proj_type}_low_proj")(low_comp), getattr(self, f"{proj_type}_high_proj")(high_comp)
+
+ def _feature_transform(self, low_x, high_x):
+ low_x = self.low_layer(low_x)
+ high_x = self.high_layer(high_x)
+ x = torch.cat([low_x, high_x], dim=-1)
+ x = self.fusion_layer(x)
+ return x
+
+ def forward(self, x):
+ xi, xv = x
+ xi_low, xi_high = self._linear_patch(x=xi, proj_type='image')
+ xv_low, xv_high = self._linear_patch(x=xv, proj_type='video')
+
+ low_x = torch.cat([xi_low, xv_low], dim=1)
+ high_x = torch.cat([xi_high, xv_high], dim=1)
+
+ return self._feature_transform(low_x=low_x, high_x=high_x)
+
+
+
+ def encode(self, x):
+ xi, xv = x
+ if xi is not None and xv is not None:
+ xi_low, xi_high = self._linear_patch(x=xi, proj_type='image')
+ xv_low, xv_high = self._linear_patch(x=xv, proj_type='video')
+
+ low_x = torch.cat([xi_low, xv_low], dim=1)
+ high_x = torch.cat([xi_high, xv_high], dim=1)
+ elif xi is not None:
+ low_x, high_x = self._linear_patch(x=xi, proj_type='image')
+ elif xv is not None:
+ low_x, high_x = self._linear_patch(x=xv, proj_type='video')
+
+ return self._feature_transform(low_x=low_x, high_x=high_x)
+
+
+
+class Decoder_Arch(nn.Module):
+ def __init__(self,
+ l_dim = 128,
+ h_dim = 384,
+ sep_num_layer = 2,
+ fusion_num_layer = 4,
+ patch_size = (2,4,4),
+ in_channel = 3
+ ):
+ super(Decoder_Arch, self).__init__()
+
+ self.l_dim = l_dim
+ self.is_first_chunk = True
+ self.tile_inference = False
+
+ self._build_linear_unpatch(in_channel=in_channel, out_channel_low=l_dim, out_channel_high=h_dim, pt=patch_size[0], ph=patch_size[1], pw=patch_size[2])
+
+ self.low_layer = ResNAF(num_layer=sep_num_layer, dim=l_dim)
+ self.high_layer = ResNAF(num_layer=sep_num_layer, dim=h_dim)
+ self.fusion_layer = ResNAF(num_layer=fusion_num_layer, dim=l_dim + h_dim)
+
+
+ def _build_linear_unpatch(self, in_channel = 3, out_channel_low = 128, out_channel_high = 384, pt = 2, ph = 4, pw = 4):
+ patch_config = {
+ 'video_low': (pt, ph, pw),
+ 'video_high': (pt, ph, pw),
+ 'image_low': (1, ph, pw),
+ 'image_high': (1, ph, pw)
+ }
+
+ for name, (t, h, w) in patch_config.items():
+ if 'low' in name:
+ out_dim = in_channel * t * h * w
+ in_dim = out_channel_low
+ else:
+ in_dim = out_channel_high
+ out_dim = in_channel * t * h * w * 7 if 'video' in name else in_channel * t * h * w * 3
+ proj = nn.Sequential(
+ nn.Linear(in_dim, out_dim),
+ Rearrange('b nt nh nw (c pt ph pw) -> b c (nt pt) (nh ph) (nw pw)', pt=t, ph=h, pw=w),
+ )
+ self.add_module(f"{name}_proj", proj)
+
+ def _linear_unpatch(self, x, proj_type):
+ low_comp, high_comp = getattr(self, f"{proj_type}_low_proj")(x[0]), getattr(self, f"{proj_type}_high_proj")(x[1])
+ return torch.cat([low_comp, high_comp], dim=1)
+
+ def _feature_transform(self, x):
+ x = self.fusion_layer(x)
+ low_x = self.low_layer(x[:,:,:,:,:self.l_dim])
+ high_x = self.high_layer(x[:,:,:,:,self.l_dim:])
+
+ return low_x, high_x
+
+
+ def decode(self, x, is_image = False):
+ low_x, high_x = self._feature_transform(x)
+
+ if is_image:
+ xi = self._linear_unpatch(x=(low_x, high_x), proj_type='image')
+ return (xi, None)
+
+ else:
+ if self.tile_inference and not self.is_first_chunk:
+ xv = self._linear_unpatch(x=(low_x, high_x), proj_type='video')
+ return (None, xv)
+ else:
+ xi = self._linear_unpatch(x=(low_x[:, :1], high_x[:, :1]), proj_type='image')
+ xv = self._linear_unpatch(x=(low_x[:, 1:], high_x[:, 1:]), proj_type='video')
+ return (xi, xv)
+
+ def forward(self, x):
+ low_x, high_x = self._feature_transform(x)
+ xi = self._linear_unpatch(x=(low_x[:, :1], high_x[:, :1]), proj_type='image')
+ xv = self._linear_unpatch(x=(low_x[:, 1:], high_x[:, 1:]), proj_type='video')
+ return (xi, xv)
+
+class ISTA(nn.Module):
+ def __init__(self,
+ points_num = 512,
+ out_num = 4,
+ iter_num = 2,
+ layer_num = 2,
+ ):
+ super(ISTA, self).__init__()
+ phi_init = np.random.normal(0.0, (1 / points_num) ** 0.5, size=(out_num, points_num))
+ self.phi = nn.Parameter(torch.from_numpy(phi_init).float(), requires_grad=True)
+ self.Q = nn.Parameter(torch.from_numpy(np.transpose(phi_init)).float(), requires_grad=True)
+ self.iter_num = iter_num
+ self.forward_l = nn.ModuleList()
+ self.backward_l = nn.ModuleList()
+
+ for _ in range(self.iter_num):
+ self.forward_l.append(NAF(num_layer=layer_num, dim=points_num))
+ self.backward_l.append(NAF(num_layer=layer_num, dim=points_num))
+
+ self.weights = nn.ParameterList()
+ self.etas = nn.ParameterList()
+ self.threshold = nn.ParameterList()
+
+ for _ in range(self.iter_num):
+ self.threshold.append(nn.Parameter(torch.Tensor([0.01]), requires_grad=True))
+ self.weights.append(nn.Parameter(torch.tensor(1.), requires_grad=True))
+
+ def sample(self, x):
+ b, t, h, w, d = x.shape
+ y = x.view(-1, d) @ self.phi.T
+ return y.view(b, t, h, w, -1)
+
+ def recon(self, y):
+ b, t, h, w, c = y.shape
+ y = y.reshape(-1, c)
+ recon = torch.mm(y, self.Q.t())
+ _, d = recon.shape
+ for i in range(self.iter_num):
+ recon_r = recon - self.weights[i] * torch.mm((torch.mm(recon, self.phi.t()) - y), self.phi)
+ recon = recon_r.reshape(b, t, h, w, -1)
+ recon = self.forward_l[i](recon)
+ recon = torch.mul(torch.sign(recon), F.relu(torch.abs(recon) - self.threshold[i]))
+
+ recon = self.backward_l[i](recon).view(-1, d)
+ recon = recon_r + recon
+ return recon.view(b, t, h, w, -1)
+
+
+ def forward(self, x):
+ y = self.sample(x)
+ recon = self.recon(y)
+ return recon
+
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/cache/vgg.pth b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/cache/vgg.pth
new file mode 100644
index 0000000000000000000000000000000000000000..f57dcf5cc764d61c8a460365847fb2137ff0a62d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/cache/vgg.pth
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a78928a0af1e5f0fcb1f3b9e8f8c3a2a5a3de244d830ad5c1feddc79b8432868
+size 7289
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/discriminator.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/discriminator.py
new file mode 100644
index 0000000000000000000000000000000000000000..b5b3ee43db5b456649578cc8554cd6993ec3152e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/discriminator.py
@@ -0,0 +1,130 @@
+from typing import Any, Union
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from einops import rearrange
+import functools
+
+class ActNorm(nn.Module):
+ def __init__(self, num_features, logdet=False, affine=True, allow_reverse_init=False):
+ assert affine
+ super().__init__()
+ self.logdet = logdet
+ self.loc = nn.Parameter(torch.zeros(1, num_features, 1, 1))
+ self.scale = nn.Parameter(torch.ones(1, num_features, 1, 1))
+ self.allow_reverse_init = allow_reverse_init
+
+ self.register_buffer("initialized", torch.tensor(0, dtype=torch.uint8))
+
+ def initialize(self, input):
+ with torch.no_grad():
+ flatten = input.permute(1, 0, 2, 3).contiguous().view(input.shape[1], -1)
+ mean = flatten.mean(1).unsqueeze(1).unsqueeze(2).unsqueeze(3).permute(1, 0, 2, 3)
+ std = flatten.std(1).unsqueeze(1).unsqueeze(2).unsqueeze(3).permute(1, 0, 2, 3)
+
+ self.loc.data.copy_(-mean)
+ self.scale.data.copy_(1 / (std + 1e-6))
+
+ def forward(self, input, reverse=False):
+ if reverse:
+ return self.reverse(input)
+ if len(input.shape) == 2:
+ input = input[:, :, None, None]
+ squeeze = True
+ else:
+ squeeze = False
+
+ _, _, height, width = input.shape
+
+ if self.training and self.initialized.item() == 0:
+ self.initialize(input)
+ self.initialized.fill_(1)
+
+ h = self.scale * (input + self.loc)
+
+ if squeeze:
+ h = h.squeeze(-1).squeeze(-1)
+
+ if self.logdet:
+ log_abs = torch.log(torch.abs(self.scale))
+ logdet = height * width * torch.sum(log_abs)
+ logdet = logdet * torch.ones(input.shape[0]).to(input)
+ return h, logdet
+
+ return h
+
+ def reverse(self, output):
+ if self.training and self.initialized.item() == 0:
+ if not self.allow_reverse_init:
+ raise RuntimeError(
+ "Initializing ActNorm in reverse direction is "
+ "disabled by default. Use allow_reverse_init=True to enable."
+ )
+ else:
+ self.initialize(output)
+ self.initialized.fill_(1)
+
+ if len(output.shape) == 2:
+ output = output[:, :, None, None]
+ squeeze = True
+ else:
+ squeeze = False
+
+ h = output / self.scale - self.loc
+
+ if squeeze:
+ h = h.squeeze(-1).squeeze(-1)
+ return h
+
+
+
+class NLayerDiscriminator(nn.Module):
+ """Defines a PatchGAN discriminator as in Pix2Pix."""
+ # https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/blob/master/models/networks.py
+ def __init__(self, input_nc=3, ndf=64, n_layers=3, use_actnorm=False):
+ """Construct a PatchGAN discriminator
+ Parameters:
+ input_nc (int) -- the number of channels in input images
+ ndf (int) -- the number of filters in the last conv layer
+ n_layers (int) -- the number of conv layers in the discriminator
+ """
+ super(NLayerDiscriminator, self).__init__()
+ if not use_actnorm:
+ norm_layer = nn.BatchNorm2d
+ else:
+ norm_layer = ActNorm
+ if type(norm_layer) == functools.partial: # no need to use bias as BatchNorm2d has affine parameters
+ use_bias = norm_layer.func != nn.BatchNorm2d
+ else:
+ use_bias = norm_layer != nn.BatchNorm2d
+
+ kw = 4
+ padw = 1
+ sequence = [nn.Conv2d(input_nc, ndf, kernel_size=kw, stride=2, padding=padw), nn.LeakyReLU(0.2, True)]
+ nf_mult = 1
+ nf_mult_prev = 1
+ for n in range(1, n_layers): # gradually increase the number of filters
+ nf_mult_prev = nf_mult
+ nf_mult = min(2**n, 8)
+ sequence += [
+ nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult, kernel_size=kw, stride=2, padding=padw, bias=use_bias),
+ norm_layer(ndf * nf_mult),
+ nn.LeakyReLU(0.2, True),
+ ]
+
+ nf_mult_prev = nf_mult
+ nf_mult = min(2**n_layers, 8)
+ sequence += [
+ nn.Conv2d(ndf * nf_mult_prev, ndf * nf_mult, kernel_size=kw, stride=1, padding=padw, bias=use_bias),
+ norm_layer(ndf * nf_mult),
+ nn.LeakyReLU(0.2, True),
+ ]
+
+ sequence += [
+ nn.Conv2d(ndf * nf_mult, 1, kernel_size=kw, stride=1, padding=padw)
+ ] # output 1 channel prediction map
+ self.main = nn.Sequential(*sequence)
+
+ def forward(self, input):
+ """Standard forward."""
+ return self.main(input)
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/lpips.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/lpips.py
new file mode 100644
index 0000000000000000000000000000000000000000..c63164f1804b37aa9e9a6739efb0b96138d4fb1b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/lpips.py
@@ -0,0 +1,230 @@
+"""Stripped version of https://github.com/richzhang/PerceptualSimilarity/tree/master/models"""
+
+import os, hashlib
+import requests
+from tqdm import tqdm
+
+import torch
+import torch.nn as nn
+from torchvision import models
+from collections import namedtuple
+import torchvision
+URL_MAP = {
+ "vgg_lpips": "https://heibox.uni-heidelberg.de/f/607503859c864bc1b30b/?dl=1"
+}
+
+CKPT_MAP = {
+ "vgg_lpips": "vgg.pth"
+}
+
+MD5_MAP = {
+ "vgg_lpips": "d507d7349b931f0638a25a48a722f98a"
+}
+
+def download(url, local_path, chunk_size=1024):
+ os.makedirs(os.path.split(local_path)[0], exist_ok=True)
+ with requests.get(url, stream=True) as r:
+ total_size = int(r.headers.get("content-length", 0))
+ with tqdm(total=total_size, unit="B", unit_scale=True) as pbar:
+ with open(local_path, "wb") as f:
+ for data in r.iter_content(chunk_size=chunk_size):
+ if data:
+ f.write(data)
+ pbar.update(chunk_size)
+
+
+def md5_hash(path):
+ with open(path, "rb") as f:
+ content = f.read()
+ return hashlib.md5(content).hexdigest()
+
+
+def get_ckpt_path(name, root, check=False):
+ assert name in URL_MAP
+ path = os.path.join(root, CKPT_MAP[name])
+ if not os.path.exists(path) or (check and not md5_hash(path) == MD5_MAP[name]):
+ print("Downloading {} model from {} to {}".format(name, URL_MAP[name], path))
+ download(URL_MAP[name], path)
+ md5 = md5_hash(path)
+ assert md5 == MD5_MAP[name], md5
+ return path
+
+
+class LPIPS(nn.Module):
+ # Learned perceptual metric
+ def __init__(self, use_dropout=True):
+ super().__init__()
+ self.scaling_layer = ScalingLayer()
+ self.chns = [64, 128, 256, 512, 512] # vg16 features
+ self.net = vgg16(pretrained=True, requires_grad=False)
+ self.lin0 = NetLinLayer(self.chns[0], use_dropout=use_dropout)
+ self.lin1 = NetLinLayer(self.chns[1], use_dropout=use_dropout)
+ self.lin2 = NetLinLayer(self.chns[2], use_dropout=use_dropout)
+ self.lin3 = NetLinLayer(self.chns[3], use_dropout=use_dropout)
+ self.lin4 = NetLinLayer(self.chns[4], use_dropout=use_dropout)
+ self.load_from_pretrained()
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def load_from_pretrained(self, name="vgg_lpips"):
+ ckpt = get_ckpt_path(name, os.path.join(os.path.dirname(os.path.abspath(__file__)), "cache"))
+ self.load_state_dict(torch.load(ckpt, map_location=torch.device("cpu")), strict=False)
+ print("loaded pretrained LPIPS loss from {}".format(ckpt))
+
+ @classmethod
+ def from_pretrained(cls, name="vgg_lpips"):
+ if name is not "vgg_lpips":
+ raise NotImplementedError
+ model = cls()
+ ckpt = get_ckpt_path(name, os.path.join(os.path.dirname(os.path.abspath(__file__)), "cache"))
+ r = model.load_state_dict(torch.load(ckpt, map_location=torch.device("cpu")), strict=False)
+ print(r)
+ return model
+
+ def forward(self, input, target):
+ in0_input, in1_input = (self.scaling_layer(input), self.scaling_layer(target))
+ outs0, outs1 = self.net(in0_input), self.net(in1_input)
+ feats0, feats1, diffs = {}, {}, {}
+ lins = [self.lin0, self.lin1, self.lin2, self.lin3, self.lin4]
+ for kk in range(len(self.chns)):
+ feats0[kk], feats1[kk] = normalize_tensor(outs0[kk]), normalize_tensor(outs1[kk])
+ diffs[kk] = (feats0[kk] - feats1[kk]) ** 2
+
+ res = [spatial_average(lins[kk].model(diffs[kk]), keepdim=True) for kk in range(len(self.chns))]
+ val = res[0]
+ for l in range(1, len(self.chns)):
+ # print(res[l].shape)
+ val += res[l]
+
+ return val
+
+
+
+
+
+class ScalingLayer(nn.Module):
+ def __init__(self):
+ super(ScalingLayer, self).__init__()
+ self.register_buffer('shift', torch.Tensor([-.030, -.088, -.188])[None, :, None, None])
+ self.register_buffer('scale', torch.Tensor([.458, .448, .450])[None, :, None, None])
+
+ def forward(self, inp):
+ return (inp - self.shift) / self.scale
+
+
+class NetLinLayer(nn.Module):
+ """ A single linear layer which does a 1x1 conv """
+ def __init__(self, chn_in, chn_out=1, use_dropout=False):
+ super(NetLinLayer, self).__init__()
+ layers = [nn.Dropout(), ] if (use_dropout) else []
+ layers += [nn.Conv2d(chn_in, chn_out, 1, stride=1, padding=0, bias=False), ]
+ self.model = nn.Sequential(*layers)
+
+
+class vgg16(torch.nn.Module):
+ def __init__(self, requires_grad=False, pretrained=True):
+ super(vgg16, self).__init__()
+ vgg_pretrained_features = models.vgg16(pretrained=pretrained).features
+ self.slice1 = torch.nn.Sequential()
+ self.slice2 = torch.nn.Sequential()
+ self.slice3 = torch.nn.Sequential()
+ self.slice4 = torch.nn.Sequential()
+ self.slice5 = torch.nn.Sequential()
+ self.N_slices = 5
+ for x in range(4):
+ self.slice1.add_module(str(x), vgg_pretrained_features[x])
+ for x in range(4, 9):
+ self.slice2.add_module(str(x), vgg_pretrained_features[x])
+ for x in range(9, 16):
+ self.slice3.add_module(str(x), vgg_pretrained_features[x])
+ for x in range(16, 23):
+ self.slice4.add_module(str(x), vgg_pretrained_features[x])
+ for x in range(23, 30):
+ self.slice5.add_module(str(x), vgg_pretrained_features[x])
+ if not requires_grad:
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, X):
+ h = self.slice1(X)
+ h_relu1_2 = h
+ h = self.slice2(h)
+ h_relu2_2 = h
+ h = self.slice3(h)
+ h_relu3_3 = h
+ h = self.slice4(h)
+ h_relu4_3 = h
+ h = self.slice5(h)
+ h_relu5_3 = h
+ vgg_outputs = namedtuple("VggOutputs", ['relu1_2', 'relu2_2', 'relu3_3', 'relu4_3', 'relu5_3'])
+ out = vgg_outputs(h_relu1_2, h_relu2_2, h_relu3_3, h_relu4_3, h_relu5_3)
+ return out
+
+
+def normalize_tensor(x,eps=1e-10):
+ norm_factor = torch.sqrt(torch.sum(x**2,dim=1,keepdim=True))
+ return x/(norm_factor+eps)
+
+
+def spatial_average(x, keepdim=True):
+ return x.mean([2,3],keepdim=keepdim)
+
+
+class ResNetLPIPS(nn.Module):
+ # Learned perceptual metric
+ def __init__(self, use_dropout=True):
+ super().__init__()
+ net, _ = clip.load(device='cpu', name='RN50')
+ self.net = net.visual
+ self.net.attnpool = nn.Identity()
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, input, target):
+
+ outs0, outs1 = self.net(input), self.net(target)
+ #feats0, feats1= normalize_tensor(outs0), normalize_tensor(outs1)
+ diffs = ((outs0 - outs1) ** 2 ) #(feats0 - feats1) ** 2
+
+ return diffs
+
+
+class MeanShift(nn.Conv2d):
+ def __init__(self, data_mean, data_std, data_range=1, norm=True):
+ c = len(data_mean)
+ super(MeanShift, self).__init__(c, c, kernel_size=1)
+ std = torch.Tensor(data_std)
+ self.weight.data = torch.eye(c).view(c, c, 1, 1)
+ if norm:
+ self.weight.data.div_(std.view(c, 1, 1, 1))
+ self.bias.data = -1 * data_range * torch.Tensor(data_mean)
+ self.bias.data.div_(std)
+ else:
+ self.weight.data.mul_(std.view(c, 1, 1, 1))
+ self.bias.data = data_range * torch.Tensor(data_mean)
+ self.requires_grad = False
+
+class VGGPerceptualLoss(torch.nn.Module):
+ def __init__(self, rank):
+ super(VGGPerceptualLoss, self).__init__()
+ blocks = []
+ pretrained = True
+ self.vgg_pretrained_features = models.vgg19(pretrained=pretrained).features
+ self.normalize = MeanShift([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], norm=True).to(rank)
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, Y, X, indices=None):
+ X = self.normalize(X)
+ Y = self.normalize(Y)
+ indices = [2, 7, 12, 21, 30]
+ weights = [1.0/2.6, 1.0/4.8, 1.0/3.7, 1.0/5.6, 10/1.5]
+ k = 0
+ loss = 0
+ for i in range(indices[-1]):
+ X = self.vgg_pretrained_features[i](X)
+ Y = self.vgg_pretrained_features[i](Y)
+ if (i+1) in indices:
+ loss += weights[k] * (X - Y.detach()).abs().mean() * 0.1
+ k += 1
+ return loss
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/vae.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/vae.py
new file mode 100644
index 0000000000000000000000000000000000000000..7acc228efac8a8b318fff172d0cefc8fe686a93a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/modules/vae.py
@@ -0,0 +1,73 @@
+import torch
+import numpy as np
+
+class DiagonalGaussianDistribution(object):
+ def __init__(self, parameters, deterministic=False):
+ self.parameters = parameters
+ self.mean, self.logvar = parameters #torch.chunk(parameters, 2, dim=1)
+ self.logvar = torch.clamp(self.logvar, -30.0, 20.0)
+ self.deterministic = deterministic
+ self.std = torch.exp(0.5 * self.logvar)
+ self.var = torch.exp(self.logvar)
+ if self.deterministic:
+ self.var = self.std = torch.zeros_like(self.mean).to(device=self.mean.device)
+
+ def sample(self):
+ x = self.mean + self.std * torch.randn(self.mean.shape).to(device=self.mean.device)
+ return x
+
+ def kl(self, other=None):
+ if self.deterministic:
+ return torch.Tensor([0.])
+ else:
+ if other is None:
+ return 0.5 * torch.sum(torch.pow(self.mean, 2)
+ + self.var - 1.0 - self.logvar,
+ dim=[1, 2, 3])
+ else:
+ return 0.5 * torch.sum(
+ torch.pow(self.mean - other.mean, 2) / other.var
+ + self.var / other.var - 1.0 - self.logvar + other.logvar,
+ dim=[1, 2, 3])
+
+ def nll(self, sample, dims=[1,2,3]):
+ if self.deterministic:
+ return torch.Tensor([0.])
+ logtwopi = np.log(2.0 * np.pi)
+ return 0.5 * torch.sum(
+ logtwopi + self.logvar + torch.pow(sample - self.mean, 2) / self.var,
+ dim=dims)
+
+ def mode(self):
+ return self.mean
+
+
+
+def normal_kl(mean1, logvar1, mean2, logvar2):
+ """
+ source: https://github.com/openai/guided-diffusion/blob/27c20a8fab9cb472df5d6bdd6c8d11c8f430b924/guided_diffusion/losses.py#L12
+ Compute the KL divergence between two gaussians.
+ Shapes are automatically broadcasted, so batches can be compared to
+ scalars, among other use cases.
+ """
+ tensor = None
+ for obj in (mean1, logvar1, mean2, logvar2):
+ if isinstance(obj, torch.Tensor):
+ tensor = obj
+ break
+ assert tensor is not None, "at least one argument must be a Tensor"
+
+ # Force variances to be Tensors. Broadcasting helps convert scalars to
+ # Tensors, but it does not work for torch.exp().
+ logvar1, logvar2 = [
+ x if isinstance(x, torch.Tensor) else torch.tensor(x).to(tensor)
+ for x in (logvar1, logvar2)
+ ]
+
+ return 0.5 * (
+ -1.0
+ + logvar2
+ - logvar1
+ + torch.exp(logvar1 - logvar2)
+ + ((mean1 - mean2) ** 2) * torch.exp(-logvar2)
+ )
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..674b85897defb9d70a00191b91ff4fa272d7b692
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..27723ca230056db794ffdcd7c4218af4d7bd9b08
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7fd8e8baefcb3778cb0c183945fdc040c828cf85
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7225eea2560a8e735e34b3982588a3f89b16efa9
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..93fced6eaece8d301e322dfd3db7835db9ee67e6
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..563323de4ff818a556356aa7c217650aa96bde0a
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/gan_loss.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a0292a40772692f6522f7e8a584d3d0f9cda7813
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..84f2516b365695044402c47c3118248316e903d1
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a48816f2f23e8497c64c68ccae7781582c005e48
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/patcher_utils.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/video_utils.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/video_utils.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f0627719bde6ef77680c75f737c95db7cfeaa8fc
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/__pycache__/video_utils.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/callbacks.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/callbacks.py
new file mode 100644
index 0000000000000000000000000000000000000000..7e7d4fa62a683e079a3e5b41f3644bd836ee9f19
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/callbacks.py
@@ -0,0 +1,120 @@
+import os
+import numpy as np
+from PIL import Image
+
+import torch
+import torchvision
+from pytorch_lightning.callbacks import Callback
+from pytorch_lightning.utilities.distributed import rank_zero_only
+
+import random
+from .utils import save_video_grid
+
+
+
+class VideoLogger(Callback):
+ def __init__(self, batch_frequency, max_videos, clamp=True, increase_log_steps=True):
+ super().__init__()
+ self.batch_freq = batch_frequency
+ self.max_videos = max_videos
+ self.log_steps = [2 ** n for n in range(int(np.log2(self.batch_freq)) + 1)]
+ if not increase_log_steps:
+ self.log_steps = [self.batch_freq]
+ self.clamp = clamp
+
+
+ @rank_zero_only
+ def log_local(self, save_dir, split, videos,
+ global_step, current_epoch, batch_idx):
+ root = os.path.join(save_dir, "videos", split)
+ for k in videos:
+ grid = videos[k] + 0.5
+ filename = "gs-{:06}_e-{:06}_b-{:06}_{}.mp4".format(
+ global_step,
+ current_epoch,
+ batch_idx,
+ k)
+ path = os.path.join(root, filename)
+ os.makedirs(os.path.split(path)[0], exist_ok=True)
+ save_video_grid(grid, path)
+
+ def log_vid(self, pl_module, batch, batch_idx, split="train"):
+ # print(batch_idx, self.batch_freq, self.check_frequency(batch_idx) and hasattr(pl_module, "log_videos") and callable(pl_module.log_videos) and self.max_videos > 0)
+ if (self.check_frequency(batch_idx) and # batch_idx % self.batch_freq == 0
+ hasattr(pl_module, "log_videos") and
+ callable(pl_module.log_videos) and
+ self.max_videos > 0):
+ # print(batch_idx, self.batch_freq, self.check_frequency(batch_idx))
+ logger = type(pl_module.logger)
+
+ is_train = pl_module.training
+ if is_train:
+ pl_module.eval()
+
+ with torch.no_grad():
+ videos = pl_module.log_videos(batch, split=split, batch_idx=batch_idx)
+
+ for k in videos:
+ N = min(videos[k].shape[0], self.max_videos)
+ videos[k] = videos[k][:N]
+ if isinstance(videos[k], torch.Tensor):
+ videos[k] = videos[k].detach().cpu()
+ if self.clamp:
+ videos[k] = torch.clamp(videos[k], -0.5, 0.5)
+
+ self.log_local(pl_module.logger.save_dir, split, videos,
+ pl_module.global_step, pl_module.current_epoch, batch_idx)
+
+ if is_train:
+ pl_module.train()
+
+ def check_frequency(self, batch_idx):
+ if (batch_idx % self.batch_freq) == 0 or (batch_idx in self.log_steps):
+ try:
+ self.log_steps.pop(0)
+ except IndexError:
+ pass
+ return True
+ return False
+
+ def on_train_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx):
+ if batch[0]['video'].ndim == 4:
+ return
+ self.log_vid(pl_module, batch, batch_idx, split="train")
+
+ def on_validation_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx):
+ self.log_vid(pl_module, batch, batch_idx, split="val")
+
+
+class DatasetCallback(Callback):
+ def __init__(self, initial_batch_size, new_batch_size, step_threshold):
+ self.initial_batch_size = initial_batch_size
+ self.new_batch_size = new_batch_size
+ self.step_threshold = step_threshold
+
+ def on_train_batch_start(self, trainer, pl_module, batch, batch_idx, dataloader_idx):
+ if trainer.global_step == self.step_threshold:
+ # 更新 DataLoader 的 batch_size
+ trainer.train_dataloader = trainer.video_data._dataloader(train=True, batch_size=self.new_batch_size) # self.new_batch_size
+ print(f'Batch size changed to {self.new_batch_size} at step {self.step_threshold}')
+ # def __init__(self):
+ # self.seqlen_list = [17, 21, 17, 25, 21, 29, 33, 17, 21, 17]
+
+# #临时取消
+
+# def on_batch_start(self, trainer, pl_module):
+# seq_len = random.randint(0, 9)
+# trainer.train_dataloader.dataset.datasets[0].sequence_length = self.seqlen_list[seq_len]
+
+# def on_train_batch_start(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx):
+# seq_len = batch_idx % 10
+# trainer.train_dataloader.dataset.datasets[dataloader_idx].sequence_length = self.seqlen_list[seq_len]
+# return
+# #为啥上面那个没报错 下边那个报错说是list呢??
+# def on_epoch_end(self, trainer, pl_module):
+# with open('tmp_shape2.txt', 'a') as f:
+# print(trainer.current_epoch, file=f )
+# #trainer.train_dataloader[0].sampler.set_epoch(trainer.current_epoch)
+# return
+
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/gan_loss.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/gan_loss.py
new file mode 100644
index 0000000000000000000000000000000000000000..471c1f56ec17164ef871239460b8b600c4146425
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/gan_loss.py
@@ -0,0 +1,147 @@
+from typing import Any, Union
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+from einops import rearrange
+import functools
+from ..modules.discriminator import NLayerDiscriminator
+
+def hinge_d_loss(logits_real, logits_fake):
+ loss_real = torch.mean(F.relu(1.0 - logits_real))
+ loss_fake = torch.mean(F.relu(1.0 + logits_fake))
+ d_loss = 0.5 * (loss_real + loss_fake)
+ return d_loss
+
+
+def vanilla_d_loss(logits_real, logits_fake):
+ d_loss = 0.5 * (torch.mean(F.softplus(-logits_real)) + torch.mean(F.softplus(logits_fake)))
+ return d_loss
+
+
+def adopt_weight(weight, global_step, threshold=0, value=0.0):
+ if global_step < threshold:
+ weight = value
+ return weight
+
+
+def _sigmoid_cross_entropy_with_logits(labels, logits):
+ """
+ non-saturating loss
+ """
+ zeros = torch.zeros_like(logits, dtype=logits.dtype)
+ condition = logits >= zeros
+ relu_logits = torch.where(condition, logits, zeros)
+ neg_abs_logits = torch.where(condition, -logits, logits)
+ return relu_logits - logits * labels + torch.log1p(torch.exp(neg_abs_logits))
+
+
+def non_saturate_gen_loss(logits_fake):
+ """
+ logits_fake: [B 1 H W]
+ """
+ B = logits_fake.shape[0]
+ logits_fake = logits_fake.reshape(B, -1)
+ logits_fake = torch.mean(logits_fake, dim=-1)
+ gen_loss = torch.mean(_sigmoid_cross_entropy_with_logits(labels=torch.ones_like(logits_fake), logits=logits_fake))
+ return gen_loss
+
+
+def lecam_reg(real_pred, fake_pred, lecam_ema):
+ reg = torch.mean(F.relu(real_pred - lecam_ema.logits_fake_ema).pow(2)) + torch.mean(
+ F.relu(lecam_ema.logits_real_ema - fake_pred).pow(2)
+ )
+ return reg
+
+
+class LeCAM_EMA(object):
+ # https://github.com/TencentARC/SEED-Voken/blob/main/src/Open_MAGVIT2/modules/losses/vqperceptual.py
+ def __init__(self, init=0.0, decay=0.999):
+ self.logits_real_ema = init
+ self.logits_fake_ema = init
+ self.decay = decay
+
+ def update(self, logits_real, logits_fake):
+ self.logits_real_ema = self.logits_real_ema * self.decay + torch.mean(logits_real).item() * (1 - self.decay)
+ self.logits_fake_ema = self.logits_fake_ema * self.decay + torch.mean(logits_fake).item() * (1 - self.decay)
+
+def weights_init(m):
+ classname = m.__class__.__name__
+ if classname.find("Conv") != -1:
+ nn.init.normal_(m.weight.data, 0.0, 0.02)
+ elif classname.find("BatchNorm") != -1:
+ nn.init.normal_(m.weight.data, 1.0, 0.02)
+ nn.init.constant_(m.bias.data, 0)
+
+class AdversarialLoss(nn.Module):
+ def __init__(
+ self,
+ disc_num_layers: int = 3,
+ disc_in_channels: int = 3,
+ disc_weight: float = 0.2,
+ lecam_loss_weight: float = 0.005,
+ disc_loss: str = "hinge",
+ dims: int = 3,
+ gen_loss_cross_entropy: bool = True,
+ ):
+ super().__init__()
+ self.dims = dims
+ assert disc_loss in ["hinge", "vanilla"]
+ self.discriminator = NLayerDiscriminator(
+ input_nc=disc_in_channels, n_layers=disc_num_layers, use_actnorm=False
+ ).apply(weights_init)
+
+ self.disc_loss = hinge_d_loss if disc_loss == "hinge" else vanilla_d_loss
+ self.discriminator_weight = disc_weight
+
+ self.gen_loss_cross_entropy = gen_loss_cross_entropy
+ self.lecam_loss_weight = lecam_loss_weight
+ if self.lecam_loss_weight > 0:
+ self.lecam_ema = LeCAM_EMA()
+
+ def get_trainable_parameters(self) -> Any:
+ return self.discriminator.parameters()
+
+ def forward(
+ self,
+ inputs,
+ reconstructions,
+ optimizer_idx,
+ ):
+
+ if optimizer_idx == 0:
+ if self.dims > 2:
+ inputs, reconstructions = map(
+ lambda x: rearrange(x, "b c t h w -> (b t) c h w"),
+ (inputs, reconstructions),
+ )
+
+ # generator update
+ logits_fake = self.discriminator(reconstructions)
+
+ if not self.gen_loss_cross_entropy:
+ g_loss = -torch.mean(logits_fake)
+ else:
+ g_loss = non_saturate_gen_loss(logits_fake)
+
+ g_loss = self.discriminator_weight * g_loss
+ return g_loss
+
+
+ if optimizer_idx == 1:
+ inputs, reconstructions = map(
+ lambda x: rearrange(x, "b c t h w -> (b t) c h w"),
+ (inputs, reconstructions),
+ )
+
+ logits_real = self.discriminator(inputs.contiguous().detach())
+ logits_fake = self.discriminator(reconstructions.contiguous().detach())
+
+ non_saturate_d_loss = self.disc_loss(logits_real, logits_fake)
+
+ if self.lecam_loss_weight > 0:
+ self.lecam_ema.update(logits_real, logits_fake)
+ lecam_loss = lecam_reg(logits_real, logits_fake, self.lecam_ema)
+ d_loss = lecam_loss * self.lecam_loss_weight + non_saturate_d_loss
+ else:
+ d_loss = non_saturate_d_loss
+ return d_loss
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/patcher_utils.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/patcher_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..acefc5dd7001eaefac5be490b2d5037270d8338a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/patcher_utils.py
@@ -0,0 +1,246 @@
+import os
+import random
+import shutil
+import sys
+from datetime import datetime
+import math
+import numpy as np
+import pywt
+import torch
+from torch.nn import Module
+import numpy as np
+import torch.nn as nn
+import torch.nn.functional as F
+import torch.nn as nn
+
+_PERSISTENT = False
+
+
+class Patcher(torch.nn.Module):
+ def __init__(self, rescale = True):
+ super().__init__()
+ self.register_buffer(
+ "wavelets", torch.tensor([0.7071067811865476, 0.7071067811865476]), persistent=_PERSISTENT
+ )
+ self.register_buffer(
+ "_arange",
+ torch.arange(2),
+ persistent=_PERSISTENT,
+ )
+
+ self.rescale = rescale
+ for param in self.parameters():
+ param.requires_grad = False
+
+
+
+ def _2ddwt(self, x, mode="reflect", rescale=False):
+ dtype = x.dtype
+ h = self.wavelets
+ x = x.squeeze(2)
+
+ n = h.shape[0]
+ g = x.shape[1]
+ hl = h.flip(0).reshape(1, 1, -1).repeat(g, 1, 1)
+ hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1)
+ hh = hh.to(dtype=dtype)
+ hl = hl.to(dtype=dtype)
+
+ x = F.pad(x, pad=(n - 2, n - 1, n - 2, n - 1), mode=mode).to(dtype)
+ xl = F.conv2d(x, hl.unsqueeze(2), groups=g, stride=(1, 2))
+ xh = F.conv2d(x, hh.unsqueeze(2), groups=g, stride=(1, 2))
+ xll = F.conv2d(xl, hl.unsqueeze(3), groups=g, stride=(2, 1))
+ xlh = F.conv2d(xl, hh.unsqueeze(3), groups=g, stride=(2, 1))
+ xhl = F.conv2d(xh, hl.unsqueeze(3), groups=g, stride=(2, 1))
+ xhh = F.conv2d(xh, hh.unsqueeze(3), groups=g, stride=(2, 1))
+
+ out = torch.cat([xll, xlh, xhl, xhh], dim=1)
+ if rescale:
+ out = out * 2
+ return out.unsqueeze(2)
+
+ def _3ddwt(self, x, mode="reflect", rescale=False):
+ dtype = x.dtype
+ h = self.wavelets
+
+ n = h.shape[0]
+ g = x.shape[1]
+ hl = h.flip(0).reshape(1, 1, -1).repeat(g, 1, 1)
+ hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1)
+ hh = hh.to(dtype=dtype)
+ hl = hl.to(dtype=dtype)
+
+ # Handles temporal axis.
+ x = F.pad(
+ x, pad=(max(0, n - 2), n - 1, n - 2, n - 1, n - 2, n - 1), mode=mode
+ ).to(dtype)
+ xl = F.conv3d(x, hl.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1))
+ xh = F.conv3d(x, hh.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1))
+
+ # Handles spatial axes.
+ xll = F.conv3d(xl, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1))
+ xlh = F.conv3d(xl, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1))
+ xhl = F.conv3d(xh, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1))
+ xhh = F.conv3d(xh, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1))
+
+ xlll = F.conv3d(xll, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+ xllh = F.conv3d(xll, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+ xlhl = F.conv3d(xlh, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+ xlhh = F.conv3d(xlh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+ xhll = F.conv3d(xhl, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+ xhlh = F.conv3d(xhl, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+ xhhl = F.conv3d(xhh, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+ xhhh = F.conv3d(xhh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2))
+
+ out = torch.cat([xlll, xllh, xlhl, xlhh, xhll, xhlh, xhhl, xhhh], dim=1)
+ if rescale:
+ out = out * (2 * torch.sqrt(torch.tensor(2.0)))
+ return out
+
+ def forward(self, x):
+ if x.shape[2] > 1:
+ if x.shape[2] % 2 == 1:
+ xi, xv = torch.split(x, [1, x.shape[2] - 1], dim=2)
+ xi = self._2ddwt(xi, rescale=self.rescale)
+ xv = self._3ddwt(xv, rescale=self.rescale)
+ return xi, xv
+ else:
+ xv = self._3ddwt(x, rescale=self.rescale)
+ return None, xv
+
+ return (self._2ddwt(x, rescale=self.rescale), None)
+
+
+class UnPatcher(torch.nn.Module):
+
+ def __init__(self, rescale = True):
+ super().__init__()
+ self.register_buffer(
+ "wavelets", torch.tensor([0.7071067811865476, 0.7071067811865476]), persistent=_PERSISTENT
+ )
+ self.register_buffer(
+ "_arange",
+ torch.arange(2),
+ persistent=_PERSISTENT,
+ )
+ self.rescale = rescale
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, x):
+ xi, xv = x
+ if xi is not None and xv is not None:
+ xi = self._2didwt(xi, rescale=self.rescale)
+ xv = self._3didwt(xv, rescale=self.rescale)
+ return torch.cat([xi.unsqueeze(2), xv], dim=2)
+ elif xv is None and xi is not None:
+ return self._2didwt(xi, rescale=self.rescale)
+ elif xv is not None and xi is None:
+ return self._3didwt(xv, rescale=self.rescale)
+
+ def _2didwt(self, x, mode="reflect", rescale=False):
+ dtype = x.dtype
+ h = self.wavelets
+ n = h.shape[0]
+ x = x.squeeze(2)
+
+ g = x.shape[1] // 4
+ hl = h.flip([0]).reshape(1, 1, -1).repeat([g, 1, 1])
+ hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1)
+ hh = hh.to(dtype=dtype)
+ hl = hl.to(dtype=dtype)
+
+ xll, xlh, xhl, xhh = torch.chunk(x.to(dtype), 4, dim=1)
+
+ # Inverse transform.
+ yl = torch.nn.functional.conv_transpose2d(
+ xll, hl.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0)
+ )
+ yl += torch.nn.functional.conv_transpose2d(
+ xlh, hh.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0)
+ )
+ yh = torch.nn.functional.conv_transpose2d(
+ xhl, hl.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0)
+ )
+ yh += torch.nn.functional.conv_transpose2d(
+ xhh, hh.unsqueeze(3), groups=g, stride=(2, 1), padding=(n - 2, 0)
+ )
+ y = torch.nn.functional.conv_transpose2d(
+ yl, hl.unsqueeze(2), groups=g, stride=(1, 2), padding=(0, n - 2)
+ )
+ y += torch.nn.functional.conv_transpose2d(
+ yh, hh.unsqueeze(2), groups=g, stride=(1, 2), padding=(0, n - 2)
+ )
+
+ if rescale:
+ y = y / 2
+ return y
+
+ def _3didwt(self, x, mode="reflect", rescale=False):
+ dtype = x.dtype
+ h = self.wavelets
+ n = h.shape[0]
+
+ g = x.shape[1] // 8 # split into 8 spatio-temporal filtered tesnors.
+ hl = h.flip([0]).reshape(1, 1, -1).repeat([g, 1, 1])
+ hh = (h * ((-1) ** self._arange)).reshape(1, 1, -1).repeat(g, 1, 1)
+ hl = hl.to(dtype=dtype)
+ hh = hh.to(dtype=dtype)
+
+ xlll, xllh, xlhl, xlhh, xhll, xhlh, xhhl, xhhh = torch.chunk(x, 8, dim=1)
+
+ # Height height transposed convolutions.
+ xll = F.conv_transpose3d(
+ xlll, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+ xll += F.conv_transpose3d(
+ xllh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+
+ xlh = F.conv_transpose3d(
+ xlhl, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+ xlh += F.conv_transpose3d(
+ xlhh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+
+ xhl = F.conv_transpose3d(
+ xhll, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+ xhl += F.conv_transpose3d(
+ xhlh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+
+ xhh = F.conv_transpose3d(
+ xhhl, hl.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+ xhh += F.conv_transpose3d(
+ xhhh, hh.unsqueeze(2).unsqueeze(3), groups=g, stride=(1, 1, 2)
+ )
+
+ # Handles width transposed convolutions.
+ xl = F.conv_transpose3d(
+ xll, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)
+ )
+ xl += F.conv_transpose3d(
+ xlh, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)
+ )
+ xh = F.conv_transpose3d(
+ xhl, hl.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)
+ )
+ xh += F.conv_transpose3d(
+ xhh, hh.unsqueeze(2).unsqueeze(4), groups=g, stride=(1, 2, 1)
+ )
+
+ # Handles time axis transposed convolutions.
+ x = F.conv_transpose3d(
+ xl, hl.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1)
+ )
+ x += F.conv_transpose3d(
+ xh, hh.unsqueeze(3).unsqueeze(4), groups=g, stride=(2, 1, 1)
+ )
+
+ if rescale:
+ x = x / (2 * torch.sqrt(torch.tensor(2.0)))
+ return x
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/utils.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..647af2a3d1a6e0507fcefd89ebf6dd3e9d8edb8b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/utils.py
@@ -0,0 +1,171 @@
+import torch
+import imageio
+
+import math
+import numpy as np
+import skvideo.io
+
+import sys
+import pdb as pdb_original
+
+class ForkedPdb(pdb_original.Pdb):
+ """A Pdb subclass that may be used
+ from a forked multiprocessing child
+
+ """
+ def interaction(self, *args, **kwargs):
+ _stdin = sys.stdin
+ try:
+ sys.stdin = open('/dev/stdin')
+ pdb_original.Pdb.interaction(self, *args, **kwargs)
+ finally:
+ sys.stdin = _stdin
+
+
+
+# Shifts src_tf dim to dest dim
+# i.e. shift_dim(x, 1, -1) would be (b, c, t, h, w) -> (b, t, h, w, c)
+def shift_dim(x, src_dim=-1, dest_dim=-1, make_contiguous=True):
+ n_dims = len(x.shape)
+ if src_dim < 0:
+ src_dim = n_dims + src_dim
+ if dest_dim < 0:
+ dest_dim = n_dims + dest_dim
+
+ assert 0 <= src_dim < n_dims and 0 <= dest_dim < n_dims
+
+ dims = list(range(n_dims))
+ del dims[src_dim]
+
+ permutation = []
+ ctr = 0
+ for i in range(n_dims):
+ if i == dest_dim:
+ permutation.append(src_dim)
+ else:
+ permutation.append(dims[ctr])
+ ctr += 1
+ x = x.permute(permutation)
+ if make_contiguous:
+ x = x.contiguous()
+ return x
+
+
+# reshapes tensor start from dim i (inclusive)
+# to dim j (exclusive) to the desired shape
+# e.g. if x.shape = (b, thw, c) then
+# view_range(x, 1, 2, (t, h, w)) returns
+# x of shape (b, t, h, w, c)
+def view_range(x, i, j, shape):
+ shape = tuple(shape)
+
+ n_dims = len(x.shape)
+ if i < 0:
+ i = n_dims + i
+
+ if j is None:
+ j = n_dims
+ elif j < 0:
+ j = n_dims + j
+
+ assert 0 <= i < j <= n_dims
+
+ x_shape = x.shape
+ target_shape = x_shape[:i] + shape + x_shape[j:]
+ return x.view(target_shape)
+
+
+def accuracy(output, target, topk=(1,)):
+ """Computes the accuracy over the k top predictions for the specified values of k"""
+ with torch.no_grad():
+ maxk = max(topk)
+ batch_size = target.size(0)
+
+ _, pred = output.topk(maxk, 1, True, True)
+ pred = pred.t()
+ correct = pred.eq(target.reshape(1, -1).expand_as(pred))
+
+ res = []
+ for k in topk:
+ correct_k = correct[:k].reshape(-1).float().sum(0, keepdim=True)
+ res.append(correct_k.mul_(100.0 / batch_size))
+ return res
+
+
+def tensor_slice(x, begin, size):
+ assert all([b >= 0 for b in begin])
+ size = [l - b if s == -1 else s
+ for s, b, l in zip(size, begin, x.shape)]
+ assert all([s >= 0 for s in size])
+
+ slices = [slice(b, b + s) for b, s in zip(begin, size)]
+ return x[slices]
+
+
+def adopt_weight(global_step, threshold=0, value=0.):
+ weight = 1
+ if global_step < threshold:
+ weight = value
+ return weight
+
+
+def save_video_grid(video, fname, nrow=None, fps=3):
+ b, c, t, h, w = video.shape
+ video = video.permute(0, 2, 3, 4, 1).contiguous()
+
+ video = (video.detach().cpu().numpy() * 255).astype('uint8')
+ if nrow is None:
+ nrow = math.ceil(math.sqrt(b))
+ ncol = math.ceil(b / nrow)
+ padding = 0 #临时修改
+ video_grid = np.zeros((t, (padding + h) * nrow + padding,
+ (padding + w) * ncol + padding, c), dtype='uint8')
+ # print(video_grid.shape)
+ for i in range(b):
+ r = i // ncol
+ c = i % ncol
+ start_r = (padding + h) * r
+ start_c = (padding + w) * c
+ video_grid[:, start_r:start_r + h, start_c:start_c + w] = video[i]
+ video = []
+ for i in range(t):
+ video.append(video_grid[i])
+ imageio.mimsave(fname, video, fps=fps)
+ # skvideo.io.vwrite(fname, video_grid, inputdict={'-r': '5'})
+ # print('saved videos to', fname)
+
+
+def comp_getattr(args, attr_name, default=None):
+ if hasattr(args, attr_name):
+ return getattr(args, attr_name)
+ else:
+ return default
+
+
+def visualize_tensors(t, name=None, nest=0):
+ if name is not None:
+ print(name, "current nest: ", nest)
+ print("type: ", type(t))
+ if 'dict' in str(type(t)):
+ print(t.keys())
+ for k in t.keys():
+ if t[k] is None:
+ print(k, "None")
+ else:
+ if 'Tensor' in str(type(t[k])):
+ print(k, t[k].shape)
+ elif 'dict' in str(type(t[k])):
+ print(k, 'dict')
+ visualize_tensors(t[k], name, nest + 1)
+ elif 'list' in str(type(t[k])):
+ print(k, len(t[k]))
+ visualize_tensors(t[k], name, nest + 1)
+ elif 'list' in str(type(t)):
+ print("list length: ", len(t))
+ for t2 in t:
+ visualize_tensors(t2, name, nest + 1)
+ elif 'Tensor' in str(type(t)):
+ print(t.shape)
+ else:
+ print(t)
+ return ""
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/video_utils.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/video_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..2153e91852e00d3e4f3536e5a8403497ba999a6f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/LeanVAE/utils/video_utils.py
@@ -0,0 +1,824 @@
+from email.policy import default
+
+import numbers
+import random
+import re
+from enum import Enum
+
+import numpy as np
+from PIL import Image
+import torch
+import torchvision as tv
+import torchvision.transforms as transforms
+import torch.nn.functional as F
+from decord import VideoReader
+
+from torch.nn.functional import interpolate as img_tensor_resize
+from torch.nn.functional import pad as img_tensor_pad
+from torch.nn.modules.utils import _quadruple
+from torchvision.transforms.functional import pad as img_pad
+from torchvision.transforms.functional import resize as img_resize
+class LMDB_Image:
+ def __init__(self, image, id):
+ self.channels = image.shape[2]
+ self.size = image.shape[:2]
+ self.image = image.tobytes()
+ self.id = id
+
+ def get_image(self):
+ image = np.frombuffer(self.image, dtype=np.uint8)
+ return image.reshape(*self.size, self.channels)
+
+# save each video as a class with byte data, which can be decoded from lmdb database.
+class LMDB_VIDEO:
+ def __init__(self, image, id):
+ self.size = image.shape
+ self.image = image.tobytes()
+ self.id = id
+
+ def get_image(self):
+ image = np.frombuffer(self.image, dtype=np.uint8)
+ return image.reshape(*self.size)
+_pil_interpolation_to_str = {
+ Image.NEAREST: "PIL.Image.NEAREST",
+ Image.BILINEAR: "PIL.Image.BILINEAR",
+ Image.BICUBIC: "PIL.Image.BICUBIC",
+ Image.LANCZOS: "PIL.Image.LANCZOS",
+ Image.HAMMING: "PIL.Image.HAMMING",
+ Image.BOX: "PIL.Image.BOX",
+}
+
+
+class VideoNorm(object):
+ """Apply Normalization to Image Pixels on GPU"""
+
+ def __init__(
+ self,
+ mean=[0.5, 0.5, 0.5],
+ std=[1.0, 1.0, 1.0],
+ #mean=[0.48145466, 0.4578275, 0.40821073],
+ #std=[0.26862954, 0.26130258, 0.27577711],
+ ):
+ # self.mean = torch.tensor(mean).cuda().view(1, 3, 1, 1)
+ # self.std = torch.tensor(std).cuda().view(1, 3, 1, 1)
+ self.mean = torch.tensor(mean).view(1, 3, 1, 1)
+ self.std = torch.tensor(std).view(1, 3, 1, 1)
+
+ def __call__(self, img):
+ """
+ Args:
+ img: float image tensors, (N, 3, H, W)
+ Returns:
+ img: normalized float image tensors
+ """
+ if torch.max(img) > 1 and self.mean.max() <= 1:
+ img.div_(255.0)
+ re = img.sub_(self.mean).div_(self.std)
+ return re
+
+
+
+
+class VideoResizeSquare(object):
+ def __init__(self, out_size, interpolation="nearest"):
+ assert isinstance(out_size, int)
+ self.out_size = out_size
+ self.interpolation = interpolation
+
+ def __call__(self, video):
+ """
+ Args:
+ img (torch.tensor): video to be scaled.
+
+ Returns:
+ torch.tensor: Rescaled video.
+ """
+ if isinstance(video, torch.Tensor):
+ if len(video.shape) == 4:
+ t, h, w, c = video.shape
+ assert (
+ c == 3
+ ), "Expecting 3-channel color video, got video of shape {}".format(
+ video.shape
+ )
+ else:
+ raise RuntimeError(
+ "Expecting 4-dimensional tensor of shape (b,t,h,w), got {}".format(
+ video.shape
+ )
+ )
+
+ # t, h, w, c -> t, c, h, w
+ video = video.permute(0, 3, 1, 2)
+ short_side = h if h < w else w
+ resized_video = img_tensor_resize(
+ video,
+ size=((self.out_size, self.out_size)),
+ mode=self.interpolation,
+ )
+
+ # t, c, h, w -> t, h, w, c
+ return resized_video.permute(0, 2, 3, 1)
+
+ else:
+ # in other data class, the order of shape might be different.
+ raise NotImplementedError(
+ "Support only torch.Tensor as input, got {}".format(type(video))
+ )
+
+ def __repr__(self):
+ return self.__class__.__name__ + "(size={0}, interpolation={1})".format(
+ self.out_size, self.interpolation
+ )
+
+
+
+def load_video_from_path_tvio(
+ video_path,
+ frm_sampling_strategy,
+ height=None,
+ width=None,
+ fps=-1,
+ num_frm=None,
+):
+ video = tv.io.read_video(rf"{video_path}", pts_unit="sec")
+ if not height or not width:
+ sampled_frms = np.array(video[0])
+ else:
+ # T, H, W, C
+ sampled_frms_tensor = video[0]
+ # expected: t, c, h, w
+ resize_func = VideoResizeSquare(out_size=height)
+ sampled_frms_tensor = resize_func(sampled_frms_tensor)
+ sampled_frms = np.array(sampled_frms_tensor)
+
+ specified_num_frm = num_frm
+ default_fps = video[2]["video_fps"]
+ vlen = sampled_frms.shape[0]
+
+ if fps != -1:
+ # resample the video to the specified fps
+ duration = vlen / default_fps
+ num_frames_to_sample = int(duration * fps)
+ resample_indices = np.linspace(
+ 0, vlen - 1, num_frames_to_sample
+ ).astype(int)
+
+ # print(default_fps, fps, resample_indices)
+ sampled_frms = sampled_frms[resample_indices]
+ default_fps = fps
+
+ vlen = sampled_frms.shape[0]
+ if num_frm is None:
+ num_frm = vlen
+
+ num_frm = min(num_frm, vlen)
+
+ if frm_sampling_strategy == "uniform":
+ frame_indices = np.linspace(0, vlen - 1, num_frm).astype(int)
+
+ elif frm_sampling_strategy == "rand":
+ # frame_indices = sorted(random.sample(range(vlen), num_frm))
+ rand_start = random.randint(0, vlen - num_frm)
+ frame_indices = np.array(range(rand_start, rand_start + num_frm)).astype(int)
+
+ elif frm_sampling_strategy == "center":
+ center = vlen // 2
+ if num_frm % 2 ==0:
+ frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2)).astype(int)
+ else:
+ frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2 + 1)).astype(int)
+
+ elif frm_sampling_strategy == "all":
+ frame_indices = np.arange(0, vlen).astype(int)
+
+ else:
+ raise NotImplementedError(
+ "Invalid sampling strategy {} ".format(frm_sampling_strategy)
+ )
+
+ raw_sample_frms = sampled_frms[
+ frame_indices
+ ]
+
+ if specified_num_frm is None:
+ masks = np.ones(len(raw_sample_frms), dtype=np.uint8)
+
+ # pad the video if the number of frames is less than specified
+ elif len(raw_sample_frms) < specified_num_frm:
+ prev_length = len(raw_sample_frms)
+ zeros = np.zeros(
+ (specified_num_frm - prev_length, height, width, 3),
+ dtype=np.uint8,
+ )
+ raw_sample_frms = np.concatenate((raw_sample_frms, zeros), axis=0)
+ masks = np.zeros(specified_num_frm, dtype=np.uint8)
+ masks[:prev_length] = 1
+
+ else:
+ masks = np.ones(specified_num_frm, dtype=np.uint8)
+
+
+ return raw_sample_frms, masks
+
+
+def load_video_from_path_decord(
+ video_path,
+ frm_sampling_strategy,
+ height=None,
+ width=None,
+ start_time=None,
+ end_time=None,
+ fps=-1,
+ num_frm=None,
+):
+ #return np.zeros((num_frm, 256, 256, 3), dtype=np.uint8), np.ones(num_frm, dtype=np.uint8)
+ specified_num_frm = num_frm
+
+ if not height or not width:
+ vr = VideoReader(rf"{video_path}")
+ else:
+ vr = VideoReader(video_path, width=width, height=height)
+
+ default_fps = vr.get_avg_fps()
+ if default_fps <= fps:
+ fps = -1
+
+ if fps != -1:
+ # resample the video to the specified fps
+ duration = len(vr) / default_fps
+ num_frames_to_sample = int(duration * fps)
+ resample_indices = np.linspace(
+ 0, len(vr) - 1, num_frames_to_sample
+ ).astype(int)
+
+ # print(default_fps, fps, resample_indices)
+ sampled_frms = vr.get_batch(resample_indices).asnumpy().astype(np.uint8)
+ default_fps = fps
+
+
+ else:
+ sampled_frms = vr.get_batch(np.arange(0, len(vr), 1, dtype=int)).asnumpy().astype(np.uint8)
+
+ vlen = sampled_frms.shape[0]
+
+ if num_frm is None:
+ num_frm = vlen
+
+ num_frm = min(num_frm, vlen)
+
+ if start_time or end_time:
+ assert (
+ fps > 0
+ ), "must provide video fps if specifying start and end time."
+ start_idx = min(int(start_time * fps), vlen)
+ end_idx = min(int(end_time * fps), vlen)
+
+ else:
+ start_idx, end_idx = 0, vlen
+
+ if frm_sampling_strategy == "uniform":
+ frame_indices = np.linspace(0, vlen - 1, num_frm).astype(int)
+
+ elif frm_sampling_strategy == "nlvl_uniform":
+ frame_indices = np.arange(
+ start_idx, end_idx, vlen / num_frm
+ ).astype(int)
+
+ elif frm_sampling_strategy == "nlvl_rand":
+ frame_indices = np.arange(
+ start_idx, end_idx, vlen / num_frm
+ ).astype(int)
+
+ strides = [
+ frame_indices[i] - frame_indices[i - 1]
+ for i in range(1, len(frame_indices))
+ ] + [vlen - frame_indices[-1]]
+ pertube = np.array(
+ [np.random.randint(0, stride) for stride in strides]
+ )
+
+ frame_indices = frame_indices + pertube
+
+ elif frm_sampling_strategy == "rand":
+ # frame_indices = sorted(random.sample(range(vlen), num_frm))
+ rand_start = random.randint(0, vlen - num_frm)
+ frame_indices = np.array(range(rand_start, rand_start + num_frm)).astype(int)
+
+ elif frm_sampling_strategy == "center":
+ center = vlen // 2
+ if num_frm % 2 ==0:
+ frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2)).astype(int)
+ else:
+ frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2 + 1)).astype(int)
+
+ elif frm_sampling_strategy == "headtail":
+ frame_indices_head = sorted(
+ random.sample(range(vlen // 2), num_frm // 2)
+ )
+ frame_indices_tail = sorted(
+ random.sample(range(vlen // 2, vlen), num_frm // 2)
+ )
+ frame_indices = frame_indices_head + frame_indices_tail
+
+ elif frm_sampling_strategy == "all":
+ frame_indices = np.arange(0, vlen).astype(int)
+
+
+ elif frm_sampling_strategy == "rand_sep":
+ sep = random.choice([1,2,3,4,5,6,7,8])
+ while (sep * num_frm) > vlen:
+ sep = random.choice([1,2,3,4,5,6,7,8])
+ rand_start = random.randint(0, vlen - sep * num_frm)
+ frame_indices = np.array(range(rand_start, rand_start + sep * num_frm, sep)).astype(int)
+
+ else:
+ raise NotImplementedError(
+ "Invalid sampling strategy {} ".format(frm_sampling_strategy)
+ )
+
+ raw_sample_frms = sampled_frms[
+ frame_indices
+ ]
+
+ if specified_num_frm is None:
+ masks = np.ones(len(raw_sample_frms), dtype=np.uint8)
+
+ # pad the video if the number of frames is less than specified
+ elif len(raw_sample_frms) < specified_num_frm:
+ prev_length = len(raw_sample_frms)
+ zeros = np.zeros(
+ (specified_num_frm - prev_length, height, width, 3),
+ dtype=np.uint8,
+ )
+ raw_sample_frms = np.concatenate((raw_sample_frms, zeros), axis=0)
+ masks = np.zeros(specified_num_frm, dtype=np.uint8)
+ masks[:prev_length] = 1
+
+ else:
+ masks = np.ones(specified_num_frm, dtype=np.uint8)
+
+ return raw_sample_frms, masks
+
+
+def load_video_from_path_lmdb(
+ sampled_frms,
+ frm_sampling_strategy,
+ height=None,
+ width=None,
+ start_time=None,
+ end_time=None,
+ fps=-1,
+ num_frm=None,
+):
+ #return np.zeros((num_frm, 256, 256, 3), dtype=np.uint8), np.ones(num_frm, dtype=np.uint8)
+ specified_num_frm = num_frm
+
+ vlen = sampled_frms.shape[0]
+
+ if num_frm is None:
+ num_frm = vlen
+
+ num_frm = min(num_frm, vlen)
+
+ if start_time or end_time:
+ assert (
+ fps > 0
+ ), "must provide video fps if specifying start and end time."
+ start_idx = min(int(start_time * fps), vlen)
+ end_idx = min(int(end_time * fps), vlen)
+
+ else:
+ start_idx, end_idx = 0, vlen
+
+ if frm_sampling_strategy == "uniform":
+ frame_indices = np.linspace(0, vlen - 1, num_frm).astype(int)
+
+ elif frm_sampling_strategy == "nlvl_uniform":
+ frame_indices = np.arange(
+ start_idx, end_idx, vlen / num_frm
+ ).astype(int)
+
+ elif frm_sampling_strategy == "nlvl_rand":
+ frame_indices = np.arange(
+ start_idx, end_idx, vlen / num_frm
+ ).astype(int)
+
+ strides = [
+ frame_indices[i] - frame_indices[i - 1]
+ for i in range(1, len(frame_indices))
+ ] + [vlen - frame_indices[-1]]
+ pertube = np.array(
+ [np.random.randint(0, stride) for stride in strides]
+ )
+
+ frame_indices = frame_indices + pertube
+
+ elif frm_sampling_strategy == "rand":
+ # frame_indices = sorted(random.sample(range(vlen), num_frm))
+ rand_start = random.randint(0, vlen - num_frm)
+ frame_indices = np.array(range(rand_start, rand_start + num_frm)).astype(int)
+
+ elif frm_sampling_strategy == "center":
+ center = vlen // 2
+ if num_frm % 2 ==0:
+ frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2)).astype(int)
+ else:
+ frame_indices = np.array(range(center - num_frm // 2, center + num_frm // 2 + 1)).astype(int)
+
+ elif frm_sampling_strategy == "headtail":
+ frame_indices_head = sorted(
+ random.sample(range(vlen // 2), num_frm // 2)
+ )
+ frame_indices_tail = sorted(
+ random.sample(range(vlen // 2, vlen), num_frm // 2)
+ )
+ frame_indices = frame_indices_head + frame_indices_tail
+
+ elif frm_sampling_strategy == "all":
+ frame_indices = np.arange(0, vlen).astype(int)
+
+
+ elif frm_sampling_strategy == "rand_sep":
+ sep = random.choice([1,2,3,4,5,6,7,8])
+ while (sep * num_frm) > vlen:
+ sep = random.choice([1,2,3,4,5,6,7,8])
+ rand_start = random.randint(0, vlen - sep * num_frm)
+ frame_indices = np.array(range(rand_start, rand_start + sep * num_frm, sep)).astype(int)
+
+ else:
+ raise NotImplementedError(
+ "Invalid sampling strategy {} ".format(frm_sampling_strategy)
+ )
+
+ raw_sample_frms = sampled_frms[
+ frame_indices
+ ]
+
+ if specified_num_frm is None:
+ masks = np.ones(len(raw_sample_frms), dtype=np.uint8)
+
+ # pad the video if the number of frames is less than specified
+ elif len(raw_sample_frms) < specified_num_frm:
+ prev_length = len(raw_sample_frms)
+ zeros = np.zeros(
+ (specified_num_frm - prev_length, height, width, 3),
+ dtype=np.uint8,
+ )
+ raw_sample_frms = np.concatenate((raw_sample_frms, zeros), axis=0)
+ masks = np.zeros(specified_num_frm, dtype=np.uint8)
+ masks[:prev_length] = 1
+
+ else:
+ masks = np.ones(specified_num_frm, dtype=np.uint8)
+
+ return raw_sample_frms, masks
+
+def image_to_tensor(image: np.ndarray, keepdim: bool = True) -> torch.Tensor:
+ """Converts a numpy image to a PyTorch 4d tensor image.
+ Args:
+ image (numpy.ndarray): image of the form :math:`(H, W, C)`, :math:`(H, W)` or
+ :math:`(B, H, W, C)`.
+ keepdim (bool): If ``False`` unsqueeze the input image to match the shape
+ :math:`(B, H, W, C)`. Default: ``True``
+ Returns:
+ torch.Tensor: tensor of the form :math:`(B, C, H, W)` if keepdim is ``False``,
+ :math:`(C, H, W)` otherwise.
+ """
+ if not isinstance(image, (np.ndarray,)):
+ raise TypeError(
+ "Input type must be a numpy.ndarray. Got {}".format(type(image))
+ )
+
+ if len(image.shape) > 4 or len(image.shape) < 2:
+ raise ValueError(
+ "Input size must be a two, three or four dimensional array"
+ )
+
+ input_shape = image.shape
+ tensor: torch.Tensor = torch.from_numpy(image)
+
+ if len(input_shape) == 2:
+ # (H, W) -> (1, H, W)
+ tensor = tensor.unsqueeze(0)
+ elif len(input_shape) == 3:
+ # (H, W, C) -> (C, H, W)
+ tensor = tensor.permute(2, 0, 1)
+ elif len(input_shape) == 4:
+ # (B, H, W, C) -> (B, C, H, W)
+ tensor = tensor.permute(0, 3, 1, 2)
+ keepdim = True # no need to unsqueeze
+ else:
+ raise ValueError(
+ "Cannot process image with shape {}".format(input_shape)
+ )
+
+ return tensor.unsqueeze(0) if not keepdim else tensor
+
+
+def get_padding(image, max_w, max_h, pad_all=False):
+ # keep the images to upper-left corner
+ if isinstance(image, torch.Tensor):
+ h, w = image.shape[-2:]
+ else:
+ w, h = image.size
+ h_padding, v_padding = max_w - w, max_h - h
+ if pad_all:
+ h_padding /= 2
+ v_padding /= 2
+ l_pad = h_padding if h_padding % 1 == 0 else h_padding + 0.5
+ t_pad = v_padding if v_padding % 1 == 0 else v_padding + 0.5
+ r_pad = h_padding if h_padding % 1 == 0 else h_padding - 0.5
+ b_pad = v_padding if v_padding % 1 == 0 else v_padding - 0.5
+ else:
+ l_pad, t_pad = 0, 0
+ r_pad, b_pad = h_padding, v_padding
+ if isinstance(image, torch.Tensor):
+ padding = (int(l_pad), int(r_pad), int(t_pad), int(b_pad))
+ else:
+ padding = (int(l_pad), int(t_pad), int(r_pad), int(b_pad))
+ return padding
+
+
+class ImagePad(object):
+ def __init__(self, max_w, max_h, fill=0, padding_mode="constant"):
+ assert isinstance(fill, (numbers.Number, str, tuple))
+ assert padding_mode in ["constant", "edge", "reflect", "symmetric"]
+ self.max_w = max_w
+ self.max_h = max_h
+ self.fill = fill
+ self.padding_mode = padding_mode
+
+ def __call__(self, img):
+ """
+ Args:
+ img (PIL Image): Image to be padded.
+
+ Returns:
+ PIL Image: Padded image.
+ """
+ if isinstance(img, torch.Tensor):
+ paddings = _quadruple(get_padding(img, self.max_w, self.max_h))
+ return img_tensor_pad(img, paddings, self.padding_mode, self.fill)
+ return img_pad(
+ img,
+ get_padding(img, self.max_w, self.max_h),
+ self.fill,
+ self.padding_mode,
+ )
+
+ def __repr__(self):
+ return (
+ self.__class__.__name__
+ + "(padding={0}, fill={1}, padding_mode={2})".format(
+ self.fill, self.padding_mode
+ )
+ )
+
+
+def get_resize_size(image, max_size):
+ """
+ Args:
+ image: PIL Image or torch.tensor
+ max_size:
+
+ Returns:
+
+ Note the height/width order difference
+ >>> pil_img = Image.open("raw_img_tensor.jpg")
+ >>> pil_img.size
+ (640, 480) # (width, height)
+ >>> np_img = np.array(pil_img)
+ >>> np_img.shape
+ (480, 640, 3) # (height, width, 3)
+ """
+ # note the order of height and width for different inputs
+ if isinstance(image, torch.Tensor):
+ # width, height = image.shape[-2:]
+ height, width = image.shape[-2:]
+ else:
+ width, height = image.size
+
+ if height >= width:
+ ratio = width * 1.0 / height
+ new_height = max_size
+ new_width = new_height * ratio
+ else:
+ ratio = height * 1.0 / width
+ new_width = max_size
+ new_height = new_width * ratio
+ size = (int(new_height), int(new_width))
+ return size
+
+
+class VideoRandomSquareCrop(object):
+ def __init__(self, crop_size, p=0.5):
+ assert isinstance(crop_size, int)
+ self.crop_size = crop_size
+ self.p = p
+
+ def __call__(self, video):
+ """
+ Args:
+ img (torch.tensor): video to be cropped.
+
+ Returns:
+ torch.tensor: cropped video.
+ """
+ if isinstance(video, torch.Tensor):
+ if len(video.shape) == 4:
+ b, t, h, w = video.shape
+ else:
+ raise RuntimeError(
+ "Expecting 4-dimensional tensor of shape (b,t,h,w), got {}".format(
+ video.shape
+ )
+ )
+
+ if random.uniform(0, 1) < self.p:
+ video = torch.flip(video, (3,))
+
+ x = random.randint(0, h - self.crop_size)
+ y = random.randint(0, w - self.crop_size)
+
+ return video[:, :, x : x + self.crop_size, y : y + self.crop_size]
+
+ else:
+ if random.uniform(0, 1) < self.p:
+ video = np.ascontiguousarray(np.flip(video, (2,)))
+ t, h, w, c = video.shape
+ x = random.randint(0, h - self.crop_size)
+ y = random.randint(0, w - self.crop_size)
+
+ return video[:, x : x + self.crop_size, y : y + self.crop_size, :]
+
+
+class ImageResize(object):
+ """Resize the input image (torch.tensor) to the given size.
+
+ Args:
+ max_size (int): Desired output size. If size is a sequence like
+ (h, w), output size will be matched to this. If size is an int,
+ smaller edge of the image will be matched to this number.
+ i.e, if height > width, then image will be rescaled to
+ (size * height / width, size)
+ interpolation (int, optional): Desired interpolation. Default is
+ ``PIL.Image.BILINEAR``
+ """
+
+ def __init__(self, max_size, interpolation=Image.BILINEAR):
+ assert isinstance(max_size, int)
+ self.max_size = max_size
+ self.interpolation = interpolation
+
+ def __call__(self, img):
+ """
+ Args:
+ img (torch.tensor): Image to be scaled.
+
+ Returns:
+ torch.tensor: Rescaled image.
+ """
+ if isinstance(img, torch.Tensor):
+ assert isinstance(self.interpolation, str)
+ return img_tensor_resize(
+ img,
+ size=get_resize_size(img, self.max_size),
+ mode=self.interpolation,
+ align_corners=False,
+ )
+ return img_resize(
+ img, get_resize_size(img, self.max_size), self.interpolation
+ )
+
+ def __repr__(self):
+ interpolate_str = _pil_interpolation_to_str[self.interpolation]
+ return self.__class__.__name__ + "(size={0}, interpolation={1})".format(
+ self.size, interpolate_str
+ )
+
+
+def get_imagenet_transform(min_size=600, max_size=1000):
+ """parameters from https://github.com/pytorch/examples/blob/master/imagenet/main.py
+ This simply crop the center square from the image
+ """
+ if min_size != 600:
+ import warnings
+
+ warnings.warn(
+ f"Warning: min_size is not used in image transform, "
+ f"setting min_size will have no effect."
+ )
+ return transforms.Compose(
+ [
+ ImageResize(
+ max_size, Image.BILINEAR
+ ), # longer side will be resized to 1000
+ ImagePad(max_size, max_size), # pad to 1000 * 1000
+ ]
+ )
+
+
+class ImageNorm(object):
+ """Apply Normalization to Image Pixels on GPU"""
+
+ def __init__(self, mean, std):
+ self.mean = torch.tensor(mean).cuda().view(1, 1, 3, 1, 1)
+ self.std = torch.tensor(std).cuda().view(1, 1, 3, 1, 1)
+ # assert max(std) <= 1 and min(std) >= 0\
+ # or max(mean) <= 1 and min(mean) >= 0,\
+ # "Please provide mean or std within range [0, 1]"
+
+ def __call__(self, img):
+ """
+ Args:
+ img: float image tensors, (B, N, 3, H, W)
+
+ Returns:
+ img: normalized float image tensors
+ """
+ if torch.max(img) > 1 and self.mean.max() <= 1:
+ img.div_(255.0)
+ return img.sub_(self.mean).div_(self.std)
+
+
+def chunk_list(examples, chunk_size=2, pad_to_divisible=True):
+ """
+ Args:
+ examples: iterable, examples grouped by image/video
+ chunk_size: int, number of examples in each chunk.
+ pad_to_divisible: bool, pad the examples to be divisible by chunk_size.
+ >>> test_examples = [3, 4, 5, 6, 7]
+ >>> chunk_list(test_examples, chunk_size=2, pad_to_divisible=True)
+ [[3, 4], [5, 6], [7, 7]] # the lst element has some randomness
+ >>> chunk_list(test_examples, chunk_size=2, pad_to_divisible=False)
+ [[3, 4], [5, 6], [7]]
+ """
+ n_examples = len(examples)
+ remainder = n_examples % chunk_size
+ if pad_to_divisible and remainder > 0:
+ n_pad = chunk_size - remainder
+ pad = random.choices(examples, k=n_pad) # with replacement
+ examples = examples + pad
+ n_examples = len(examples)
+ remainder = 0
+ chunked_examples = []
+ n_chunks = int(n_examples / chunk_size)
+ n_chunks = n_chunks + 1 if remainder > 0 else n_chunks
+ for i in range(n_chunks):
+ chunked_examples.append(examples[i * chunk_size : (i + 1) * chunk_size])
+ return chunked_examples
+
+
+# def repeat_tensor_rows(raw_tensor, row_repeats):
+# """ repeat raw_tensor[i] row_repeats[i] times.
+# Args:
+# raw_tensor: (B, *)
+# row_repeats: list(int), len(row_repeats) == len(raw_tensor)
+# """
+# assert len(raw_tensor) == len(raw_tensor), "Has to be the same length"
+# if sum(row_repeats) == len(row_repeats):
+# return raw_tensor
+# else:
+# indices = torch.LongTensor(
+# flat_list_of_lists([[i] * r for i, r in enumerate(row_repeats)])
+# ).to(raw_tensor.device)
+# return raw_tensor.index_select(0, indices)
+
+
+def pre_caption(caption, max_words=50):
+ caption = re.sub(
+ r"([.!\"()*#:;~])",
+ " ",
+ caption.lower(),
+ )
+ caption = re.sub(
+ r"\s{2,}",
+ " ",
+ caption,
+ )
+ caption = caption.rstrip("\n")
+ caption = caption.strip(" ")
+
+ # truncate caption
+ caption_words = caption.split(" ")
+ if len(caption_words) > max_words:
+ caption = " ".join(caption_words[:max_words])
+
+ return caption
+
+
+
+
+class InterpolationMode(Enum):
+ """Interpolation modes
+ Available interpolation methods are ``nearest``, ``bilinear``, ``bicubic``, ``box``, ``hamming``, and ``lanczos``.
+ """
+
+ NEAREST = "nearest"
+ BILINEAR = "bilinear"
+ BICUBIC = "bicubic"
+ # For PIL compatibility
+ BOX = "box"
+ HAMMING = "hamming"
+ LANCZOS = "lanczos"
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/README.md b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..b2db10e5c830399479fe0caeaf15b403690d648f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/README.md
@@ -0,0 +1,85 @@
+# Generative Enhancement for 3D Medical Images
+
+This is the official code for https://arxiv.org/abs/2403.12852.
+
+
+
+## Installation
+
+Clone this repository and install packages:
+```
+git clone https://github.com/HKU-MedAI/GEM-3D.git
+conda env create --file environment.yml
+conda activate gem
+```
+
+## Preparation
+
+1. The preprocessed datasets can be found [here](https://connecthkuhk-my.sharepoint.com/:u:/g/personal/ltzhu99_connect_hku_hk/ES0_s1XN3_BDhQn6W3cPvPgB-LnX9SJqUcBQ3dA8g-jqZA?e=3qiz5v). (For BraTS, we use the version from [Medical Segmentation Decathlon](http://medicaldecathlon.com/#tasks) and only use the FLAIR modality. For abdomen dataset, we crop the outlier regions where contain too many empty slices. Note that we need the gt segmentation for benchmark, and we mannually split the training splits. The datasets are preprocessed with [nnUNet](https://github.com/MIC-DKFZ/nnUNet).)
+
+2. Download [KL-f8 AE](https://ommer-lab.com/files/latent-diffusion/kl-f8.zip) from [LDM](https://github.com/CompVis/latent-diffusion).
+
+
+3. You can download our pretrained models [here](https://connecthkuhk-my.sharepoint.com/:u:/g/personal/ltzhu99_connect_hku_hk/EdGegBBAYVZMnhLhAvs46OUBRDPVmYBI6IqX20K3OWGTQA?e=McrYWl).
+
+## Training
+```
+# stage 1, 150k iters
+CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage1.yaml -t --gpus 0,1,2,3,4,5,6,7,
+
+# Edit the path-to-stage1-ckpt keyword in the stage 2 yaml
+vi configs/latent-diffusion/brain_stage2.yaml
+
+# stage 2, 50k iters
+CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage2.yaml -t --gpus 0,1,2,3,4,5,6,7,
+```
+```
+# baseline (a modified version of Make-A-Volume[MICCAI 2023]): use the yaml with 'base' and train the models in two stages, the same as the commands above
+```
+```
+# position conditioned slice generation model (one-stage), 150k iters
+CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_slice.yaml -t --gpus 0,1,2,3,4,5,6,7,
+```
+Note that the training costs more than 30G for each card, requiring GPUs like V100 and A100.
+
+And the training can also be conducted with fewer cards.
+
+## Inference
+
+Prepare the models in the directory `infer_model/`.
+```
+# postfix:
+# {ic,icma,ig,igma} correspond to the 4 settings in the paper (Tab.1)
+# test means that data comes from the test split (Tab.2)
+# base corresponds to the baseline
+# slice corresponds to position conditioned slice generation model
+python inference_{dataset}_{postfix}.py
+
+## e.g.,
+python inference_brain_ic.py
+```
+The inference costs GPU memory within 20G.
+
+## Citation
+
+If you find our work useful, please kindly cite as:
+```
+@article{zhu2024generative,
+ title={Generative Enhancement for 3D Medical Images},
+ author={Zhu, Lingting and Codella, Noel and Chen, Dongdong and Jin, Zhenchao and Yuan, Lu and Yu, Lequan},
+ journal={arXiv preprint arXiv:2403.12852},
+ year={2024}
+}
+
+@inproceedings{zhu2023make,
+ title={Make-a-volume: Leveraging latent diffusion models for cross-modality 3d brain mri synthesis},
+ author={Zhu, Lingting and Xue, Zeyue and Jin, Zhenchao and Liu, Xian and He, Jingzhen and Liu, Ziwei and Yu, Lequan},
+ booktitle={International Conference on Medical Image Computing and Computer-Assisted Intervention},
+ pages={592--601},
+ year={2023},
+ organization={Springer}
+}
+```
+
+## Acknowledgement
+The codebase is developed based on [SD](https://github.com/CompVis/stable-diffusion) (Rombach et al.).
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b81b42ec51e17a66f46f81539c96c72260e018c0
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..34bf0f6580102a506b16641a2cae9e342daf55a2
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..90fe8458edd81309252d0e1062006b9e50d1aa56
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..57c8d513884558465a77d6281b4dc5ca8a2a4ddf
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/__pycache__/main.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/config.sh b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/config.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b6ddfa2e6a80a81a414757217d4001ed1e4c79db
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/config.sh
@@ -0,0 +1,34 @@
+# stage 1, 150k iters
+CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage1.yaml -t --gpus 0,1,2,3,4,5,6,7,
+
+# Edit the path-to-stage1-ckpt keyword in the stage 2 yaml
+vi configs/latent-diffusion/brain_stage2.yaml
+
+# stage 2, 50k iters
+CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python main.py --base configs/latent-diffusion/brain_stage2.yaml -t --gpus 0,1,2,3,4,5,6,7,
+
+
+
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_stage1.yaml -t --gpus 0,
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice.yaml -t --gpus 0,
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/abdomen_3d.yaml -t --gpus 0,
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten.yaml -t --gpus 0,
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten2.yaml -t --gpus 0,
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten3.yaml -t --gpus 0,
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten4.yaml -t --gpus 0,
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/brain_slice_atten5.yaml -t --gpus 0,
+
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/full_ct_2d_with_body_mask.yaml -t --gpus 0, --resume ./logs/full_ct_2d_with_body_mask
+
+CUDA_VISIBLE_DEVICES=0 python main.py --base configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml -t --gpus 0, --resume ./logs/full_ct_3d_with_body_mask_finetune2
+
+pip install beartype PyWavelets
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..56952ba5c1861d34258b413f45dc69cc4c530eeb
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-09-13T02-58-56_brain_slice/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e7de493c0863442030a795d1184fa9727f1d8cba
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-30T18-29-30_brain_slice_13class_new_randomclass_alldata/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 4
+ validation:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..88c5c6da6a5b9b8d62ad8dd80ca9b98965ff1e93
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata2.yaml
@@ -0,0 +1,94 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-31T18-08-08_brain_slice_13class_new_randomclass_alldata2/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 4
+ data_file: 'data_split/splits_final_all.json'
+ validation:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_file: 'data_split/splits_final_all.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..15236399e4f11d469c47b99bf7c9931ab995584b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata3.yaml
@@ -0,0 +1,94 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-11-04T07-42-05_brain_slice_13class_new_randomclass_alldata3/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset104_AbdomenAtlas2.0_1102'
+ data_repeat: 4
+ data_file: 'data_split/splits_final_all2.json'
+ validation:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset104_AbdomenAtlas2.0_1102'
+ data_file: 'data_split/splits_final_all2.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..04fc5db5434b658303f65569d44e0b911b29d63e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_13class_randomclass_alldata4.yaml
@@ -0,0 +1,94 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-11-06T12-22-22_brain_slice_13class_new_randomclass_alldata4/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset105_AbdomenAtlas2.0_1106'
+ data_repeat: 4
+ data_file: 'data_split/splits_final_all3.json'
+ validation:
+ target: ldm.data.volume_dataset_13class_randomclass.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset105_AbdomenAtlas2.0_1106'
+ data_file: 'data_split/splits_final_all3.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8ad8ed99a640b36e035ecef611336963e505aa65
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-13T09-17-24_brain_slice_28class_new_randomclass/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_28class_randomclass.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+ data_repeat: 4
+ validation:
+ target: ldm.data.volume_dataset_28class_randomclass.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..aed19612e02b38d31704969a5c14515dae8d459d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass2.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-19T04-42-07_brain_slice_28class_new_randomclass/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_28class_randomclass.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+ data_repeat: 4
+ validation:
+ target: ldm.data.volume_dataset_28class_randomclass.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e60a5c4a29a67d0b43f867a1791e0b43e8e3fc2d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_28class_randomclass3.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-17T08-03-29_brain_slice_28class_new_randomclass/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_28class_randomclass.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+ data_repeat: 4
+ validation:
+ target: ldm.data.volume_dataset_28class_randomclass.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2675ecb7c09de350866fc702f5b5b1b05d8c0d6c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten3.yaml
@@ -0,0 +1,93 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: hybrid
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-11T04-22-28_brain_slice_atten3/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 128
+ attention_resolutions: [ 4, 2, 1 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 4, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: True
+ transformer_depth: 1
+ context_dim: 4096
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 2
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten5.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten5.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1a8939f57246c6f8f6972f119a430cddc7783a2e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_atten5.yaml
@@ -0,0 +1,93 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: hybrid
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-11T04-32-33_brain_slice_atten5/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 4, 2, 1 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 4, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: True
+ transformer_depth: 1
+ context_dim: 5
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_kidney.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_kidney.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2328f6286a6c20ca6576fc3e8b3abd95b6e7c7aa
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_kidney.yaml
@@ -0,0 +1,96 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-31T09-36-59_brain_slice_kidney/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/kidney/splits_final.json'
+ data_repeat: 4
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/kidney/splits_final.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_pancreas.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_pancreas.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..949617ab3329326a1f02091c320f574413742652
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_3d_pancreas.yaml
@@ -0,0 +1,96 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: masked_volume
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: /storage/chenqi/code/GEM-3D-ct/logs/2024-10-31T09-43-34_brain_slice_pancreas/checkpoints/last.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/pancreas/splits_final.json'
+ data_repeat: 4
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/pancreas/splits_final.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage1.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..37cfe5164f06d92ff0949e62be7c7d80f5f465a3
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage1.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 8
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_base.volume_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset_base.volume_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e200c08d09a4d6664d0a910299cef4b52677c7c7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_base_stage2.yaml
@@ -0,0 +1,93 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: path-to-stage1-ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 8
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_base.volume_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset_base.volume_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_slice.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_slice.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4c3360c0cda853d0b0d3b53c1d6bb8b73e8dc8e5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_slice.yaml
@@ -0,0 +1,94 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: pos_id
+ cond_stage_trainable: false
+ conditioning_key: crossattn
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 4
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 4, 2, 1 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 4, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: True
+ transformer_depth: 1
+ context_dim: 128
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config:
+ target: ldm.modules.encoders.modules.PositionalEmbedder
+ params:
+ dim: 128
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+ data_repeat: 300
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage1.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..645ae86af5143000dae304f9ac4a76d033a999b3
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage1.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: ref_and_volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 12
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6132ebfca21c0161b2fedad95f66608a3f3d0b51
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/abdomen_stage2.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: ref_and_volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: path-to-stage1-ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 12
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset200_Abdomen'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage1.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6b707fb63b865776dacd93eb2af8c8b67a92f75c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage1.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 8
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_base.volume_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset_base.volume_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c22e3cae54b1c2b63ddd5e18f7129feb8c54bb3a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_base_stage2.yaml
@@ -0,0 +1,93 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: path-to-stage1-ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 8
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset_base.volume_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset_base.volume_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..db27b89a55e936f1428e183e92bcbb971b77deb0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..87b95745018d70ac2dc149d94f302b0ed54c29c2
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 4 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a87b5034aa78be063f904eff089a6edca0fbb610
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 4 # 1000 100
+ data_file: 'data_split/splits_final_new.json'
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 80 # 1000 100
+ data_file: 'data_split/splits_final_new.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..cea75aeaed628f090b2b13bfb1b452f7d33dd196
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata2.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 4 # 1000 100
+ data_file: 'data_split/splits_final_all.json'
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset103_AbdomenAtlas2.0_base'
+ data_repeat: 10 # 1000 100
+ data_file: 'data_split/splits_final_all.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ba7b7d038c08dee9c96533848b77ecba2facc29c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata3.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset104_AbdomenAtlas2.0_1102'
+ data_repeat: 4 # 1000 100
+ data_file: 'data_split/splits_final_all2.json'
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset104_AbdomenAtlas2.0_1102'
+ data_repeat: 10 # 1000 100
+ data_file: 'data_split/splits_final_all2.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e8236f13d1c8a0c3f02778fedf6944b13b99b51e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata4.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset105_AbdomenAtlas2.0_1106'
+ data_repeat: 4 # 1000 100
+ data_file: 'data_split/splits_final_all3.json'
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset105_AbdomenAtlas2.0_1106'
+ data_repeat: 10 # 1000 100
+ data_file: 'data_split/splits_final_all3.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata_kl4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata_kl4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2f2a9a78fa498ad5bbbea7fb8d7ada95812564e1
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_13class_new_randomclass_alldata_kl4.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 128
+ channels: 7
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 128
+ in_channels: 7 # 4
+ out_channels: 3 # 4
+ model_channels: 192
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f4/model.ckpt'
+ embed_dim: 3
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 3
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 16 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass_kl4.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset104_AbdomenAtlas2.0_1102'
+ data_repeat: 4 # 1000 100
+ data_file: 'data_split/splits_final_all2.json'
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass_kl4.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset104_AbdomenAtlas2.0_1102'
+ data_repeat: 1 # 1000 100
+ data_file: 'data_split/splits_final_all2.json'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 24
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
+ # max_epochs: 400
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f764ddc774430556a7492a417e5688f69a9485e0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_resize.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset100_AbdomenAtlasX'
+ data_repeat: 4 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_resize.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset100_AbdomenAtlasX'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0784ba552c5e3c3e9737cc69b736cff142329eac
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+ data_repeat: 4 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b1386468645c74fb00cd6e2499f8b4128fe77c50
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass.yaml
@@ -0,0 +1,98 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 8
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 8 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/sd/qichen/full_ct_gen/latent-diffusion/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ # cond_stage_config: __is_first_stage__
+
+ cond_stage_config:
+ target: ldm.modules.encoders.modules.BERTEmbedder
+ params:
+ n_embed: 1280
+ n_layer: 32
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 2 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000 # 100
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass_2k.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass_2k.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b724f5a02400388737a6d5975216c16b4b3576b4
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_28class_new_randomclass_2k.yaml
@@ -0,0 +1,91 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+ data_repeat: 4 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset_abdomenatlas_28class_randomclass.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset101_AbdomenAtlasInternal'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
+ max_epochs: 200
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1e7b20b53fa354c7bf821b0c697368fb1f02ed10
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 4 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3a84d911b03025a442926e16167d77602ddcc52b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten2.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 4 # 4
+ out_channels: 4 # 4
+ model_channels: 128
+ attention_resolutions: [ 4, 2, 1 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 4, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: True
+ transformer_depth: 1
+ context_dim: 5
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 56 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 56
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
+ max_epochs: 200
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b654f88a0b2b96874b7d32e9643d8fc8ae7c1a2b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten3.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: hybrid # crossattn
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 128
+ attention_resolutions: [ 4, 2, 1 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 4, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: True
+ transformer_depth: 1
+ context_dim: 5
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 56 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 56
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
+ max_epochs: 200
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..af302905d3c984295b6b777c4bb38213e23723f5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten4.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 4 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 4, 2, 1 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 4, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: True
+ transformer_depth: 1
+ context_dim: 5
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 48 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 56
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
+ max_epochs: 200
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten5.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten5.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ae38ec78fd29f3f80d48e86b681e9fc1d0b7d1ff
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_atten5.yaml
@@ -0,0 +1,92 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: hybrid # crossattn
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 4, 2, 1 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 4, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: True
+ transformer_depth: 1
+ context_dim: 5
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 48 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100
+ max_images: 56
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
+ max_epochs: 200
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch384.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch384.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..01ed38b74795928fe5a438c21f15edb33c3a6689
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch384.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 384
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch512.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch512.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b8ac17442464075e48f803040701e1bb4a0a2dff
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_ch512.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 512
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 32 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 200 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
+ data_repeat: 80 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_kidney.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_kidney.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6898365658ff7f724b73ba01bc274d44ff24150d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_kidney.yaml
@@ -0,0 +1,94 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 48 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/kidney/splits_final.json'
+ data_repeat: 20 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset018_AbdomenAtlas2.0_base_kidney'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/kidney/splits_final.json'
+ data_repeat: 20 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_pancreas.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_pancreas.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8673c4b8f22f107824ed008044bb59a3e2f31f82
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_slice_pancreas.yaml
@@ -0,0 +1,94 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: slice_data
+ cond_stage_key: masked_slice
+ cond_stage_trainable: false
+ conditioning_key: concat # crossattn
+ image_size: 64
+ channels: 9
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 9 # 4
+ out_channels: 4 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: '/storage/chenqi/code/latent-diffusion-main/models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 48 # 32
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.slice_dataset.slice_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/pancreas/splits_final.json'
+ data_repeat: 50 # 1000 100
+ validation:
+ target: ldm.data.slice_dataset.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset017_AbdomenAtlas2.0_base_pancreas'
+ planner: 'nnUNetPlans_3d_fullres'
+ data_file: 'data_split/pancreas/splits_final.json'
+ data_repeat: 20 # 1000 100
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 500
+ max_images: 32
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage1.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage1.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a3ab2756587418343eef51b37e1d70f01577a216
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage1.yaml
@@ -0,0 +1,90 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: ref_and_volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 12
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: '/storage/chenqi/data/gem_3d_data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: '/storage/chenqi/data/gem_3d_data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c90408472e62f1a13e009e02e99ba7f07dac72e6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/brain_stage2.yaml
@@ -0,0 +1,93 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: ref_and_volume_seg
+ cond_stage_trainable: false
+ conditioning_key: concat
+ image_size: 64
+ channels: 4
+ monitor: val/loss_simple_ema
+ scale_factor: 0.18215
+ use_ema: False
+ ckpt_path: path-to-stage1-ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 12
+ out_channels: 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: false
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+ first_stage_config:
+ target: ldm.models.autoencoder.AutoencoderKL
+ params:
+ ckpt_path: 'models/first_stage_models/kl-f8/model.ckpt'
+ embed_dim: 4
+ monitor: val/rec_loss
+ ddconfig:
+ double_z: true
+ z_channels: 4
+ resolution: 256
+ in_channels: 3
+ out_ch: 3
+ ch: 128
+ ch_mult:
+ - 1
+ - 2
+ - 4
+ - 4
+ num_res_blocks: 2
+ attn_resolutions: []
+ dropout: 0.0
+ lossconfig:
+ target: torch.nn.Identity
+ cond_stage_config: __is_first_stage__
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ train:
+ target: ldm.data.volume_dataset.volume_train
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+ data_repeat: 100
+ validation:
+ target: ldm.data.volume_dataset.volume_val
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
+
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 20000
+ max_images: 8
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b4038ffac8caf74db49fdb7dc87ad0dbd03c4745
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask.yaml
@@ -0,0 +1,67 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000 # 100
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2ffca8f631a80af53ebca26c877095e483dfd949
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask2.yaml
@@ -0,0 +1,67 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.5
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000 # 100
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask3.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f57bb7c6736731ab039bb1264b1f4549f2da43b7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask3.yaml
@@ -0,0 +1,67 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.51
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000 # 100
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask4.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b4038ffac8caf74db49fdb7dc87ad0dbd03c4745
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_2d_with_body_mask4.yaml
@@ -0,0 +1,67 @@
+model:
+ base_learning_rate: 5.0e-7
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8 # 32
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000 # 100
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e8f1d72ffebfb9cbe5689decbe05b018f53cd8db
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask.yaml
@@ -0,0 +1,70 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: False
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e8f1d72ffebfb9cbe5689decbe05b018f53cd8db
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml
@@ -0,0 +1,70 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: False
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..033260c6cfa4181cbd87dc28c252aa8b0e2090ef
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune.yaml
@@ -0,0 +1,71 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: False
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask4/checkpoints/epoch=000833.ckpt
+ # ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask/checkpoints/base.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..621c875b2faff63b17e93a097d1f41b7b0b249e9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask2_finetune2.yaml
@@ -0,0 +1,70 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: False
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask4/checkpoints/epoch=000833.ckpt
+ load_only_unet: True
+ fix_t: False
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..14b225d0b231cd329c57257b5b441338773e7631
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune.yaml
@@ -0,0 +1,70 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.0
+ use_ema: False
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask/checkpoints/base.ckpt
+ load_only_unet: True
+ fix_t: True
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune2.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..37017b47fe7ee6ef9c2e9f0efe53fe98bf8adb09
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/full_ct_3d_with_body_mask_finetune2.yaml
@@ -0,0 +1,70 @@
+model:
+ base_learning_rate: 5.0e-6
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.0120
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ # cond_stage_trainable: false
+ conditioning_key: crossattn # crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.0
+ use_ema: False
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae/logs/full_ct_2d_with_body_mask/checkpoints/base.ckpt
+ load_only_unet: True
+ fix_t: False
+
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32 # 4
+ out_channels: 16 # 4
+ model_channels: 224
+ attention_resolutions: [ 8, 4, 2 ]
+ num_res_blocks: 2
+ channel_mult: [ 1, 2, 3, 4 ]
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: True
+ legacy: False
+
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv'
+
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ csv_file: '/sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv'
+ labels: '/sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv'
+
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: False
+
+ trainer:
+ benchmark: True
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3919299787898eaa15bf2594bc571d4ac998de98
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen.yaml
@@ -0,0 +1,11 @@
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ validation:
+ target: ldm.data.slice_dataset_infer.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen3d.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen3d.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f87d78f163e381bcd8ddcd03ad061a5e8c19c5c7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen3d.yaml
@@ -0,0 +1,12 @@
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ validation:
+ # target: ldm.data.volume_dataset_infer.volume_val
+ target: ldm.data.volume_dataset_infer.volume_train
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_28class_randomclass.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_28class_randomclass.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b1fda1e8074104293585b7fb56c408b640997a90
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_28class_randomclass.yaml
@@ -0,0 +1,11 @@
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ validation:
+ target: ldm.data.slice_dataset_infer_28class_randomclass.slice_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_test.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..99590484c0d32f7260e344f2245da263aa6284a3
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_abdomen_test.yaml
@@ -0,0 +1,11 @@
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ validation:
+ target: ldm.data.volume_dataset.volume_test
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset201_Abdomen_test'
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1e52b9de4d46b2d3d50575996a06db5f1a80ef6f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain.yaml
@@ -0,0 +1,11 @@
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ validation:
+ target: ldm.data.volume_dataset.volume_test
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset202_Brain'
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain_test.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..80bcabf1bd9acfe663f6b4bb835ea575891d37ab
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/inference_brain_test.yaml
@@ -0,0 +1,11 @@
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ validation:
+ target: ldm.data.volume_dataset.volume_test
+ params:
+ data_root: './data/nnUNet_preprocessed/'
+ data_name: 'Dataset203_Brain_test'
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/mask_generation.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/mask_generation.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..09ed691b3a1209780a1d5644e9b1e3e00ad8908e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/configs/latent-diffusion/mask_generation.yaml
@@ -0,0 +1,11 @@
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 1
+ num_workers: 5
+ wrap: false
+ validation:
+ target: ldm.data.mask_generation.volume_val
+ params:
+ data_root: '/storage/chenqi/data/our_data/nnUNet_preprocessed/'
+ data_name: 'Dataset010_MSD_Liver'
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split.py
new file mode 100644
index 0000000000000000000000000000000000000000..93e6e36f375bf381c00ef6dd8eadcd2138f27c7f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split.py
@@ -0,0 +1,43 @@
+import random
+import os
+
+# 设定文件路径
+train_file = 'train.txt' # 训练集输出文件
+eval_file = 'eval.txt' # 验证集输出文件
+test_file = 'test.txt' # 测试集输出文件
+
+# 读取数据
+data = sorted(os.listdir('/storage/chenqi/data/BraTS_2019_Data_Training/All'))
+
+# 随机打乱数据
+random.shuffle(data)
+
+# 计算各个数据集的大小
+train_size = 290
+eval_size = 8
+test_size = 37
+
+# 划分数据集
+train_data = data[:train_size]
+eval_data = data[train_size:train_size + eval_size]
+test_data = data[train_size + eval_size:]
+
+# 保存到txt文件
+with open(train_file, 'w') as file:
+ for i in train_data:
+ file.write(i)
+ file.write('\n')
+
+with open(eval_file, 'w') as file:
+ for i in eval_data:
+ file.write(i)
+ file.write('\n')
+
+
+with open(test_file, 'w') as file:
+ for i in test_data:
+ file.write(i)
+ file.write('\n')
+
+
+print(f"数据集已划分完成,并分别保存为: {train_file}, {eval_file}, {test_file}")
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/colon_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/colon_json.py
new file mode 100644
index 0000000000000000000000000000000000000000..8cab94d85965ff5a548586f5a98641e39d48417a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/colon_json.py
@@ -0,0 +1,32 @@
+import os
+from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p
+import csv
+
+with open('/storage/chenqi/X_data/annotatedtumor_txt/colon_tumor_cases.txt', 'r') as f:
+ all_files=f.readlines()
+all_files = [os.path.basename(i.split(' ')[0]).split('.')[0] for i in all_files]
+all_files = [i.split('\n')[0] for i in all_files]
+
+with open('/storage/chenqi/code/DiffTumor/STEP3.SegmentationModel/cross_eval/colon_tumor_data_fold/real_tumor_val_1.txt', 'r') as f:
+ val_liver=f.readlines()
+val_liver = [os.path.basename(i.split(' ')[0]).split('.')[0] for i in val_liver]
+
+cases_info = [*csv.DictReader(open('final_mapping_qichen.csv'))]
+
+val_bdmap=[]
+for i in cases_info:
+ if i['source_dataset'] == 'MSD-Colon':
+ for j in val_liver:
+ if j == i['source_id']:
+ val_bdmap.append(i['AbdomenAtlas_id'])
+
+
+breakpoint()
+write_content = []
+train_liver = list(set(all_files) - set(val_bdmap))
+write_content.append({"train":train_liver, "val":val_bdmap})
+
+# breakpoint()
+
+splits_file = 'splits_final_colon_bdmap.json'
+save_json(write_content, splits_file)
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/eso_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/eso_json.py
new file mode 100644
index 0000000000000000000000000000000000000000..6843ae6df17c1d32f9eb3c846882ded8f8f5d2d5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/eso_json.py
@@ -0,0 +1,18 @@
+import os
+from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p
+import csv
+
+
+all_files = os.listdir('/storage/chenqi/X_data/esophagus_BodyMapPro')
+val_files = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_eso_bdmap.json')[0]['val']
+
+
+write_content = []
+train_liver = list(set(all_files) - set(val_files))
+# breakpoint()
+write_content.append({"train":train_liver, "val":val_files})
+
+# breakpoint()
+
+splits_file = 'splits_eso.json'
+save_json(write_content, splits_file)
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/final_mapping_qichen.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/final_mapping_qichen.csv
new file mode 100644
index 0000000000000000000000000000000000000000..9f74411ae7b5e01687f94bf9ea29fd937b9213b8
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/final_mapping_qichen.csv
@@ -0,0 +1,5196 @@
+AbdomenAtlas_id,source_id,source_dataset,liver,pancreas,kidney
+BDMAP_00000001,PETCT_404f8c732f,autoPET,unknown,unknown,unknown
+BDMAP_00000002,PANCREAS_0039,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000003,s0543,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000004,colon_195,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000005,TCIAColon_0256_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000006,PETCT_63464433c8,autoPET,unknown,unknown,unknown
+BDMAP_00000007,hepaticvessel_447,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000008,case_00280,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000009,word_0086,WORD,unknown,unknown,unknown
+BDMAP_00000010,PETCT_f637b5930b,autoPET,unknown,unknown,unknown
+BDMAP_00000011,PETCT_49479d6e64,autoPET,unknown,unknown,unknown
+BDMAP_00000012,TCIAColon_0300_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000013,hepaticvessel_200,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000014,s0904,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000015,hepaticvessel_406,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000016,LDCT-L277_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00000017,FLARE23_Ts_0084_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000018,s1089,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000019,TCIAColon_0233_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00000020,img0034,BTCV,healthy,healthy,healthy
+BDMAP_00000021,s0369,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000022,TCIAColon_0249_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000023,case_00228,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000024,pancreas_476,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000025,hepaticvessel_343,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000026,NIH-LYMPH-ABD-041_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000027,colon_188,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000028,Case_01035_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000029,hepaticvessel_334,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000030,colon_139,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000031,PETCT_b53ba7c6bf,autoPET,unknown,unknown,unknown
+BDMAP_00000032,PETCT_5d553bf6b4,autoPET,unknown,unknown,unknown
+BDMAP_00000033,PETCT_ba81e4b04b,autoPET,unknown,unknown,unknown
+BDMAP_00000034,case_00268,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000035,hepaticvessel_325,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000036,case_00401,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000037,hepaticvessel_036,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000038,hepaticvessel_199,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000039,case_00066,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000040,TCIAColon_0262_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000041,PETCT_f5c2c09846,autoPET,unknown,unknown,unknown
+BDMAP_00000042,s0250,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000043,case_00298,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000044,case_00512,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000045,colon_128,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000046,CPTAC-PDA-C3N-02010_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000047,Case_00056_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000048,TCIAColon_0188_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000049,Case_00535_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000050,amos_0059,AMOS,unknown,unknown,unknown
+BDMAP_00000051,s1374,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000052,pancreas_385,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000053,PETCT_2ce074c2ea,autoPET,unknown,unknown,unknown
+BDMAP_00000054,CPTAC-PDA-C3N-03000_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000055,pancreas_014,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000056,spleen_33,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00000057,TCIAColon_0166_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000058,LDCT-L193_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00000059,case_00286,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000060,TCIAColon_0232_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000061,s1348,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000062,case_00017,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000063,TCIAColon_0161_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000064,liver_148,MSD-Liver,unknown,unknown,unknown
+BDMAP_00000065,LDCT-L219_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00000066,case_00116,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000067,TCIAColon_0082_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000068,Case_00799_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000069,colon_012,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000070,s0429,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000071,amos_0044,AMOS,unknown,unknown,unknown
+BDMAP_00000072,PETCT_5de3ac617a,autoPET,unknown,unknown,unknown
+BDMAP_00000073,PETCT_ded50b1e68,autoPET,unknown,unknown,unknown
+BDMAP_00000074,lung_016,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000075,hepaticvessel_005,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000076,amos_0159,AMOS,unknown,unknown,unknown
+BDMAP_00000077,PETCT_6170317f2e,autoPET,unknown,unknown,unknown
+BDMAP_00000078,lung_003,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000079,s0896,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000080,TCIAColon_0286_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000081,PETCT_2a78eed085,autoPET,unknown,unknown,unknown
+BDMAP_00000082,colon_150,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000083,PETCT_61348439bf,autoPET,unknown,unknown,unknown
+BDMAP_00000084,liver_59,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000085,PETCT_b2f82ed4b9,autoPET,unknown,unknown,unknown
+BDMAP_00000086,TCGA-BLCA-4Z-AA86_0_3,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00000087,pancreas_346,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000088,PETCT_d3dac0d1cd,autoPET,unknown,unknown,unknown
+BDMAP_00000089,amos_0038,AMOS,unknown,unknown,unknown
+BDMAP_00000090,case_00147,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000091,liver_38,LiTS,healthy,unknown,unknown
+BDMAP_00000092,FLARE23_Ts_0016_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000093,pancreas_348,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000094,hepaticvessel_431,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000095,Case_00773_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000096,colon_084,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000097,TCIAColon_0260_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000098,PETCT_90ea6a6aaf,autoPET,unknown,unknown,unknown
+BDMAP_00000099,TCIAColon_0154_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000100,liver_71,LiTS,unhealthy,unknown,unknown
+BDMAP_00000101,liver_13,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000102,case_00272,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000103,TCIAColon_0102_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000104,case_00130,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000105,hepaticvessel_186,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000106,CPTAC-PDA-C3N-03670_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000107,TCIAColon_0195_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00000108,s0342,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000109,img0040,BTCV,healthy,healthy,healthy
+BDMAP_00000110,PANCREAS_0021,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000111,lung_086,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000112,hepaticvessel_172,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000113,liver_113,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000114,TCIAColon_0122_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000115,hepaticvessel_354,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000116,CPTAC-PDA-C3N-03670_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000117,case_00188,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000118,volume-20,CT-ORG,unknown,unknown,unknown
+BDMAP_00000119,PETCT_6604b228c6,autoPET,unknown,unknown,unknown
+BDMAP_00000120,PETCT_d6a491e16d,autoPET,unknown,unknown,unknown
+BDMAP_00000121,hepaticvessel_169,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000122,case_00473,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000123,CPTAC-PDA-C3N-01167_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000124,Case_00002_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000125,pancreas_468,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000126,s0090,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000127,s0899,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000128,case_00270,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000129,case_00264,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000130,PETCT_0f44cec2e6,autoPET,unknown,unknown,unknown
+BDMAP_00000131,pancreas_121,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000132,colon_069,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000133,PETCT_442a09f90e,autoPET,unknown,unknown,unknown
+BDMAP_00000134,hepaticvessel_195,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000135,TCGA-STAD-A8DU_0_2,TCGA-STAD,unknown,unknown,unknown
+BDMAP_00000136,s0606,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000137,case_00129,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000138,colon_166,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000139,case_00233,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000140,liver_119,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000141,img0064,BTCV,healthy,healthy,healthy
+BDMAP_00000142,s0477,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000143,hepaticvessel_424,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000144,TCIAColon_0242_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000145,TCIAColon_0240_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000146,PETCT_ca47fe5e7d,autoPET,unknown,unknown,unknown
+BDMAP_00000147,PETCT_8eb3998417,autoPET,unknown,unknown,unknown
+BDMAP_00000148,s0428,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000149,case_00460,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000150,s1405,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000151,amos_0288,AMOS,unknown,unknown,unknown
+BDMAP_00000152,colon_051,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000153,hepaticvessel_194,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000154,pancreas_255,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000155,hepaticvessel_167,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000156,TCIAColon_0207_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000157,pancreas_306,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000158,TCIAColon_0055_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000159,case_00243,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000160,amos_0231,AMOS,unknown,unknown,unknown
+BDMAP_00000161,case_00579,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000162,case_00205,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000163,PETCT_13f476b02b,autoPET,unknown,unknown,unknown
+BDMAP_00000164,TCIAColon_0116_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000165,s0143,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000166,lung_081,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000167,case_00292,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000168,TCIAColon_0065_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000169,TCIAColon_0206_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000170,TCIAColon_0020_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00000171,hepaticvessel_027,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000172,hepaticvessel_398,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000173,TCIAColon_0001_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000174,s0257,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000175,PETCT_7a3a27371a,autoPET,unknown,unknown,unknown
+BDMAP_00000176,case_00529,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000177,PETCT_d3f13dff4b,autoPET,unknown,unknown,unknown
+BDMAP_00000178,Case_00675_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000179,TCIAColon_0132_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000180,TCIAColon_0036_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000181,TCIAColon_0047_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000182,CPTAC-PDA-C3N-03430_0_13,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000183,TCIAColon_0134_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000184,s0657,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000185,FLARE23_Ts_0097_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000186,volume-48,CT-ORG,unknown,unknown,unknown
+BDMAP_00000187,hepaticvessel_355,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000188,NIH-LYMPH-MED-016_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000189,hepaticvessel_332,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000190,colon_133,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000191,TCIAColon_0046_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000192,pancreas_199,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000193,TCIAColon_0006_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000194,PETCT_80f21e1ed0,autoPET,unknown,unknown,unknown
+BDMAP_00000195,amos_0214,AMOS,unknown,unknown,unknown
+BDMAP_00000196,PETCT_335a00191d,autoPET,unknown,unknown,unknown
+BDMAP_00000197,pancreas_409,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000198,PANCREAS_0044,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000199,s1069,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000200,word_0139,WORD,unknown,unknown,unknown
+BDMAP_00000201,hepaticvessel_222,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000202,TCIAColon_0120_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000203,Case_00708_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000204,hepaticvessel_134,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000205,liver_14,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000206,s1221,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000207,PETCT_b62864161e,autoPET,unknown,unknown,unknown
+BDMAP_00000208,5_image,CHAOS,healthy,healthy,healthy
+BDMAP_00000209,Case_00900_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000210,hepaticvessel_012,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000211,Case_00791_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000212,PETCT_a8a5e96821,autoPET,unknown,unknown,unknown
+BDMAP_00000213,PETCT_05d5a79faf,autoPET,unknown,unknown,unknown
+BDMAP_00000214,word_0029,WORD,unknown,unknown,unknown
+BDMAP_00000215,FLARE23_Ts_0036_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000216,hepaticvessel_303,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000217,s0182,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000218,TCIAColon_0063_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000219,case_00523,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000220,img0009,BTCV,healthy,healthy,healthy
+BDMAP_00000221,FLARE23_Ts_0064_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000222,s0394,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000223,colon_200,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000224,Case_00762_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000225,pancreas_370,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000226,colon_156,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000227,s0344,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000228,Case_00029_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000229,case_00070,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000230,TCIAColon_0256_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000231,PETCT_07fec0d985,autoPET,unknown,unknown,unknown
+BDMAP_00000232,liver_81,LiTS,unhealthy,unknown,unknown
+BDMAP_00000233,case_00472,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000234,PETCT_24cb79a92b,autoPET,unknown,unknown,unknown
+BDMAP_00000235,lung_054,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000236,pancreas_301,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000237,PETCT_5e0bc6cdda,autoPET,unknown,unknown,unknown
+BDMAP_00000238,TCIAColon_0154_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000239,hepaticvessel_032,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000240,case_00412,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000241,case_00566,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000242,PETCT_2946d59a94,autoPET,unknown,unknown,unknown
+BDMAP_00000243,pancreas_241,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000244,case_00299,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000245,case_00400,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000246,PANCREAS_0040,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000247,liver_77,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000248,TCIAColon_0225_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000249,case_00293,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000250,CPTAC-UCEC-C3L-01732_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00000251,pancreas_494,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000252,word_0123,WORD,unknown,unknown,unknown
+BDMAP_00000253,PETCT_e00c98b415,autoPET,unknown,unknown,unknown
+BDMAP_00000254,amos_0348,AMOS,unknown,unknown,unknown
+BDMAP_00000255,hepaticvessel_071,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000256,FLARE23_Ts_0014_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000257,amos_0115,AMOS,unknown,unknown,unknown
+BDMAP_00000258,hepaticvessel_189,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000259,case_00584,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000260,PETCT_d6de1252d9,autoPET,unknown,unknown,unknown
+BDMAP_00000261,FLARE23_Ts_0080_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000262,NIH-LYMPH-MED-003_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000263,case_00174,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000264,colon_092,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000265,PETCT_aa27cb9156,autoPET,unknown,unknown,unknown
+BDMAP_00000266,PETCT_c3cc732d95,autoPET,unknown,unknown,unknown
+BDMAP_00000267,s1337,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000268,hepaticvessel_418,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000269,PETCT_072833774e,autoPET,unknown,unknown,unknown
+BDMAP_00000270,hepaticvessel_139,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000271,CPTAC-PDA-C3N-02997_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000272,amos_0152,AMOS,unknown,unknown,unknown
+BDMAP_00000273,liver_40,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000274,PETCT_49f3d297b0,autoPET,unknown,unknown,unknown
+BDMAP_00000275,s1210,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000276,PETCT_baacf43b4f,autoPET,unknown,unknown,unknown
+BDMAP_00000277,PETCT_f60ea3abc5,autoPET,unknown,unknown,unknown
+BDMAP_00000278,hepaticvessel_378,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000279,case_00054,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000280,Case_00853_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000281,PETCT_0223010e46,autoPET,unknown,unknown,unknown
+BDMAP_00000282,TCIAColon_0139_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00000283,volume-111,CT-ORG,unknown,unknown,unknown
+BDMAP_00000284,Case_00910_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000285,case_00487,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000286,PETCT_4c670a5445,autoPET,unknown,unknown,unknown
+BDMAP_00000287,Case_00951_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000288,s0620,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000289,TCIAColon_0021_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000290,CPTAC-PDA-C3N-03430_1_8,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000291,amos_0103,AMOS,unknown,unknown,unknown
+BDMAP_00000292,volume-86,CT-ORG,unknown,unknown,unknown
+BDMAP_00000293,CPTAC-CCRCC-C3N-00312_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000294,PETCT_69ee62b035,autoPET,unknown,unknown,unknown
+BDMAP_00000295,TCIAColon_0060_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00000296,TCIAColon_0119_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000297,case_00432,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000298,s0721,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000299,hepaticvessel_037,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000300,PETCT_f47e31ceb5,autoPET,unknown,unknown,unknown
+BDMAP_00000301,PETCT_47f4460050,autoPET,unknown,unknown,unknown
+BDMAP_00000302,s0330,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000303,TCIAColon_0114_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000304,case_00112,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000305,PETCT_cf20ad1656,autoPET,unknown,unknown,unknown
+BDMAP_00000306,liver_191,MSD-Liver,unknown,unknown,unknown
+BDMAP_00000307,TCIAColon_0158_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000308,s0752,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000309,FLARE23_Ts_0090_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000310,hepaticvessel_181,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000311,PETCT_6d62e15c29,autoPET,unknown,unknown,unknown
+BDMAP_00000312,word_0073,WORD,unknown,unknown,unknown
+BDMAP_00000313,hepaticvessel_300,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000314,amos_0404,AMOS,unknown,unknown,unknown
+BDMAP_00000315,s0243,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000316,hepaticvessel_326,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000317,PETCT_f4813007a0,autoPET,unknown,unknown,unknown
+BDMAP_00000318,PETCT_080922db5a,autoPET,unknown,unknown,unknown
+BDMAP_00000319,case_00230,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000320,case_00461,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000321,case_00109,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000322,hepaticvessel_457,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000323,TCIAColon_0241_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000324,pancreas_355,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000325,hepaticvessel_175,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000326,amos_0332,AMOS,unknown,unknown,unknown
+BDMAP_00000327,TCGA-OV-61-1901_1_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00000328,pancreas_432,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000329,case_00481,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000330,PETCT_e344879c2e,autoPET,unknown,unknown,unknown
+BDMAP_00000331,case_00182,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000332,pancreas_104,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000333,PETCT_f5cff2e59d,autoPET,unknown,unknown,unknown
+BDMAP_00000334,PETCT_f21755a99b,autoPET,unknown,unknown,unknown
+BDMAP_00000335,s1368,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000336,case_00235,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000337,TCIAColon_0077_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000338,pancreas_091,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000339,TCIAColon_0084_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00000340,PETCT_dd887591a9,autoPET,unknown,unknown,unknown
+BDMAP_00000341,s0663,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000342,amos_0064,AMOS,unknown,unknown,unknown
+BDMAP_00000343,PETCT_b1219c408b,autoPET,unknown,unknown,unknown
+BDMAP_00000344,TCIAColon_0079_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000345,colon_103,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000346,FLARE23_Ts_0047_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000347,liver_95,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000348,PETCT_1f6b6b0548,autoPET,unknown,unknown,unknown
+BDMAP_00000349,s0884,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000350,Case_00766_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000351,PANCREAS_0048,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000352,s0206,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000353,case_00297,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000354,TCIAColon_0146_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000355,case_00141,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000356,case_00218,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000357,PETCT_274688d0a8,autoPET,unknown,unknown,unknown
+BDMAP_00000358,PETCT_277fc3c67c,autoPET,unknown,unknown,unknown
+BDMAP_00000359,case_00051,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000360,CPTAC-PDA-C3N-01383_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000361,s0293,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000362,liver_6,LiTS,unhealthy,unknown,unknown
+BDMAP_00000363,NIH-LYMPH-ABD-077_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000364,case_00548,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000365,PETCT_72ee9ec897,autoPET,unknown,unknown,unknown
+BDMAP_00000366,case_00197,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000367,TCIAColon_0192_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00000368,case_00115,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000369,Case_00809_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000370,PETCT_816732638d,autoPET,unknown,unknown,unknown
+BDMAP_00000371,s1183,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000372,word_0066,WORD,unknown,unknown,unknown
+BDMAP_00000373,colon_141,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000374,PETCT_956520090b,autoPET,unknown,unknown,unknown
+BDMAP_00000375,case_00065,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000376,PETCT_2b8064fbe2,autoPET,unknown,unknown,unknown
+BDMAP_00000377,hepaticvessel_081,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000378,TCIAColon_0082_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000379,PETCT_dadcd69ba9,autoPET,unknown,unknown,unknown
+BDMAP_00000380,hepaticvessel_114,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000381,lung_083,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000382,CPTAC-CCRCC-C3L-01954_3_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000383,colon_110,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000384,amos_0376,AMOS,unknown,unknown,unknown
+BDMAP_00000385,word_0140,WORD,unknown,unknown,unknown
+BDMAP_00000386,26_image,CHAOS,healthy,healthy,healthy
+BDMAP_00000387,hepaticvessel_347,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000388,pancreas_312,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000389,PETCT_2716c9bfff,autoPET,unknown,unknown,unknown
+BDMAP_00000390,s0607,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000391,CPTAC-PDA-C3N-01715_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000392,s0709,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000393,TCIAColon_0280_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000394,FLARE23_Ts_0037_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000395,Case_00206_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000396,FLARE23_Ts_0043_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000397,TCIAColon_0040_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00000398,PETCT_b509ace2a2,autoPET,unknown,unknown,unknown
+BDMAP_00000399,Case_01050_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000400,liver_100,LiTS,unhealthy,unknown,unknown
+BDMAP_00000401,TCIAColon_0153_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000402,NIH-LYMPH-ABD-082_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000403,PETCT_4095c12e2d,autoPET,unknown,unknown,unknown
+BDMAP_00000404,TCIAColon_0295_0_6,TCIAColon,unknown,unknown,unknown
+BDMAP_00000405,FLARE23_Ts_0001_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000406,PETCT_5ac4fd9091,autoPET,unknown,unknown,unknown
+BDMAP_00000407,TCIAColon_0267_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000408,volume-103,CT-ORG,unknown,unknown,unknown
+BDMAP_00000409,hepaticvessel_220,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000410,Case_00413_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000411,pancreas_069,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000412,TCIAColon_0158_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000413,liver_39,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000414,case_00037,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000415,hepaticvessel_285,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000416,pancreas_209,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000417,PETCT_4f7a8f41c0,autoPET,unknown,unknown,unknown
+BDMAP_00000418,Case_00795_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000419,TCIAColon_0226_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000420,amos_0135,AMOS,unknown,unknown,unknown
+BDMAP_00000421,pancreas_428,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000422,FLARE23_Ts_0022_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000423,word_0138,WORD,unknown,unknown,unknown
+BDMAP_00000424,pancreas_482,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000425,TCIAColon_0055_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000426,s0903,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000427,pancreas_320,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000428,case_00278,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000429,case_00530,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000430,pancreas_106,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000431,pancreas_377,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000432,case_00149,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000433,Case_00576_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000434,case_00541,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000435,case_00463,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000436,hepaticvessel_193,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000437,liver_126,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000438,pancreas_096,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000439,case_00145,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000440,hepaticvessel_439,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000441,pancreas_189,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000442,Case_00756_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000443,amos_0362,AMOS,unknown,unknown,unknown
+BDMAP_00000444,hepaticvessel_247,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000445,CPTAC-CCRCC-C3L-00799_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000446,PETCT_a4cb97ffc7,autoPET,unknown,unknown,unknown
+BDMAP_00000447,pancreas_379,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000448,s0667,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000449,case_00135,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000450,hepaticvessel_460,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000451,PETCT_d51664a9e4,autoPET,unknown,unknown,unknown
+BDMAP_00000452,case_00062,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000453,hepaticvessel_312,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000454,PETCT_5bd311a5e9,autoPET,unknown,unknown,unknown
+BDMAP_00000455,TCIAColon_0296_0_6,TCIAColon,unknown,unknown,unknown
+BDMAP_00000456,s1314,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000457,hepaticvessel_070,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000458,case_00096,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000459,PETCT_01682f60c3,autoPET,unknown,unknown,unknown
+BDMAP_00000460,pancreas_139,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000461,lung_075,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000462,pancreas_211,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000463,Case_01012_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000464,hepaticvessel_141,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000465,case_00199,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000466,hepaticvessel_083,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000467,s0252,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000468,word_0113,WORD,unknown,unknown,unknown
+BDMAP_00000469,case_00082,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000470,pancreas_088,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000471,PETCT_6c23f2686d,autoPET,unknown,unknown,unknown
+BDMAP_00000472,Case_00921_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000473,lung_033,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000474,word_0038,WORD,unknown,unknown,unknown
+BDMAP_00000475,PETCT_e2309b8f92,autoPET,unknown,unknown,unknown
+BDMAP_00000476,hepaticvessel_238,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000477,PETCT_d4a08e4bde,autoPET,unknown,unknown,unknown
+BDMAP_00000478,amos_0390,AMOS,unknown,unknown,unknown
+BDMAP_00000479,amos_0078,AMOS,unknown,unknown,unknown
+BDMAP_00000480,liver_69,LiTS,unhealthy,unknown,unknown
+BDMAP_00000481,case_00221,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000482,PETCT_2f587d00b1,autoPET,unknown,unknown,unknown
+BDMAP_00000483,word_0100,WORD,unknown,unknown,unknown
+BDMAP_00000484,amos_0350,AMOS,unknown,unknown,unknown
+BDMAP_00000485,amos_0058,AMOS,unknown,unknown,unknown
+BDMAP_00000486,PETCT_be0d3c767e,autoPET,unknown,unknown,unknown
+BDMAP_00000487,case_00081,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000488,TCIAColon_0124_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000489,Case_00968_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000490,pancreas_463,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000491,Case_00054_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000492,TCIAColon_0079_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000493,pancreas_141,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000494,colon_049,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000495,img0023,BTCV,healthy,healthy,healthy
+BDMAP_00000496,19_image,CHAOS,healthy,healthy,healthy
+BDMAP_00000497,PETCT_fde79b6aa9,autoPET,unknown,unknown,unknown
+BDMAP_00000498,CPTAC-PDA-C3N-01166_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000499,PETCT_91cfa804b0,autoPET,unknown,unknown,unknown
+BDMAP_00000500,hepaticvessel_450,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000501,TCIAColon_0111_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000502,TCIAColon_0180_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000503,Case_00849_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000504,Case_00050_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000505,case_00081,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000506,TCGA-BLCA-4Z-AA80_0_2,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00000507,s1028,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000508,Case_00729_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000509,TCIAColon_0174_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00000510,TCIAColon_0184_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000511,case_00060,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000512,CPTAC-PDA-C3N-03670_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000513,hepaticvessel_023,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000514,hepaticvessel_111,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000515,TCIAColon_0203_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000516,case_00073,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000517,PETCT_c9f1b9980f,autoPET,unknown,unknown,unknown
+BDMAP_00000518,case_00249,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000519,lung_057,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000520,PETCT_8c8cd2699c,autoPET,unknown,unknown,unknown
+BDMAP_00000521,pancreas_452,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000522,PETCT_7c96c4626d,autoPET,unknown,unknown,unknown
+BDMAP_00000523,amos_0004,AMOS,unknown,unknown,unknown
+BDMAP_00000524,PETCT_e252be4334,autoPET,unknown,unknown,unknown
+BDMAP_00000525,word_0102,WORD,unknown,unknown,unknown
+BDMAP_00000526,TCIAColon_0110_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000527,s1334,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000528,PETCT_8b714a64e7,autoPET,unknown,unknown,unknown
+BDMAP_00000529,PETCT_581fa95eb0,autoPET,unknown,unknown,unknown
+BDMAP_00000530,s0771,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000531,amos_0143,AMOS,unknown,unknown,unknown
+BDMAP_00000532,case_00520,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000533,CPTAC-PDA-C3N-02997_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000534,hepaticvessel_063,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000535,s0545,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000536,PETCT_d3dac0d1cd,autoPET,unknown,unknown,unknown
+BDMAP_00000537,TCIAColon_0083_1_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000538,PETCT_0223010e46,autoPET,unknown,unknown,unknown
+BDMAP_00000539,TCIAColon_0115_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000540,case_00125,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000541,pancreas_393,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000542,pancreas_111,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000543,Case_00187_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000544,PETCT_1253499c80,autoPET,unknown,unknown,unknown
+BDMAP_00000545,s0183,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000546,word_0083,WORD,unknown,unknown,unknown
+BDMAP_00000547,colon_111,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000548,amos_0097,AMOS,unknown,unknown,unknown
+BDMAP_00000549,hepaticvessel_442,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000550,PETCT_1019ae8551,autoPET,unknown,unknown,unknown
+BDMAP_00000551,amos_0405,AMOS,unknown,unknown,unknown
+BDMAP_00000552,colon_008,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000553,TCIAColon_0275_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000554,lung_005,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000555,case_00145,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000556,volume-109,CT-ORG,unknown,unknown,unknown
+BDMAP_00000557,PETCT_d5103c8fbf,autoPET,unknown,unknown,unknown
+BDMAP_00000558,pancreas_311,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000559,CPTAC-UCEC-C3N-00743_0_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00000560,s0115,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000561,CPTAC-PDA-C3N-01167_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000562,case_00058,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000563,PETCT_7ed037687a,autoPET,unknown,unknown,unknown
+BDMAP_00000564,PETCT_6c660140ca,autoPET,unknown,unknown,unknown
+BDMAP_00000565,PETCT_ae96f738c0,autoPET,unknown,unknown,unknown
+BDMAP_00000566,s1404,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000567,case_00072,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000568,colon_213,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000569,case_00485,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000570,LDCT-L248_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00000571,case_00583,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000572,liver_39,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000573,s0566,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000574,case_00101,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000575,PETCT_416d3b9b78,autoPET,unknown,unknown,unknown
+BDMAP_00000576,TCIAColon_0155_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000577,14_image,CHAOS,healthy,healthy,healthy
+BDMAP_00000578,s1187,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000579,CPTAC-CCRCC-C3L-01462_0_9,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000580,img0037,BTCV,healthy,healthy,healthy
+BDMAP_00000581,PETCT_ec6b934720,autoPET,unknown,unknown,unknown
+BDMAP_00000582,case_00414,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000583,volume-56,CT-ORG,unknown,unknown,unknown
+BDMAP_00000584,spleen_18,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00000585,s0589,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000586,Case_00852_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000587,case_00033,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000588,TCIAColon_0015_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000589,pancreas_147,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000590,pancreas_205,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000591,Case_00689_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000592,hepaticvessel_101,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000593,TCIAColon_0228_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000594,s0656,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000595,PETCT_0b98dbe00d,autoPET,unknown,unknown,unknown
+BDMAP_00000596,PETCT_8838c53a63,autoPET,unknown,unknown,unknown
+BDMAP_00000597,amos_0181,AMOS,unknown,unknown,unknown
+BDMAP_00000598,PANCREAS_0027,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000599,Case_00065_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000600,PETCT_912a25778f,autoPET,unknown,unknown,unknown
+BDMAP_00000601,FLARE23_Ts_0033_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000602,Case_00061_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000603,hepaticvessel_177,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000604,case_00436,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000605,TCIAColon_0097_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000606,TCIAColon_0085_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000607,liver_56,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000608,case_00031,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000609,s0171,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000610,s0011,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000611,TCGA-BLCA-4Z-AA7O_0_12,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00000612,TCIAColon_0281_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000613,PETCT_7a77b26403,autoPET,unknown,unknown,unknown
+BDMAP_00000614,pancreas_037,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000615,liver_42,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000616,case_00454,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000617,s1389,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000618,pancreas_254,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000619,PETCT_b3e923029c,autoPET,unknown,unknown,unknown
+BDMAP_00000620,word_0035,WORD,unknown,unknown,unknown
+BDMAP_00000621,hepaticvessel_394,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000622,TCIAColon_0026_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000623,pancreas_012,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000624,pancreas_123,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000625,s0329,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000626,case_00410,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000627,TCIAColon_0196_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000628,s1363,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000629,word_0104,WORD,unknown,unknown,unknown
+BDMAP_00000630,TCIAColon_0189_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000631,PETCT_cd9bdca46b,autoPET,unknown,unknown,unknown
+BDMAP_00000632,PETCT_ee97822c60,autoPET,unknown,unknown,unknown
+BDMAP_00000633,pancreas_263,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000634,PETCT_7e5729ea40,autoPET,unknown,unknown,unknown
+BDMAP_00000635,PETCT_323cc5aff8,autoPET,unknown,unknown,unknown
+BDMAP_00000636,PETCT_9c36b318e8,autoPET,unknown,unknown,unknown
+BDMAP_00000637,TCIAColon_0220_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000638,TCIAColon_0123_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000639,s1384,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000640,PETCT_a4a66c4fa7,autoPET,unknown,unknown,unknown
+BDMAP_00000641,Case_00783_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000642,liver_75,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000643,amos_0010,AMOS,unknown,unknown,unknown
+BDMAP_00000644,Case_01000_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000645,word_0047,WORD,unknown,unknown,unknown
+BDMAP_00000646,case_00136,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000647,s0731,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000648,hepaticvessel_058,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000649,case_00221,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000650,TCIAColon_0266_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00000651,hepaticvessel_321,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000652,PETCT_cc5c58c82d,autoPET,unknown,unknown,unknown
+BDMAP_00000653,case_00452,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000654,colon_017,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000655,PETCT_7255ccbcf4,autoPET,unknown,unknown,unknown
+BDMAP_00000656,case_00226,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000657,hepaticvessel_146,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000658,word_0117,WORD,unknown,unknown,unknown
+BDMAP_00000659,img0077,BTCV,healthy,healthy,healthy
+BDMAP_00000660,case_00443,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000661,PETCT_92c5c944a5,autoPET,unknown,unknown,unknown
+BDMAP_00000662,case_00587,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000663,Case_00964_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000664,s0484,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000665,PETCT_9aa97cf103,autoPET,unknown,unknown,unknown
+BDMAP_00000666,word_0090,WORD,unknown,unknown,unknown
+BDMAP_00000667,case_00011,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000668,PETCT_dd975744e7,autoPET,unknown,unknown,unknown
+BDMAP_00000669,TCIAColon_0186_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000670,FLARE23_Ts_0015_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000671,liver_45,LiTS,unhealthy,unknown,unknown
+BDMAP_00000672,PETCT_e79291780d,autoPET,unknown,unknown,unknown
+BDMAP_00000673,PANCREAS_0002,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000674,TCIAColon_0024_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000675,TCIAColon_0235_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000676,pancreas_256,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000677,pancreas_036,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000678,word_0018,WORD,unknown,unknown,unknown
+BDMAP_00000679,pancreas_092,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000680,Case_01058_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000681,CPTAC-CCRCC-C3L-00792_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000682,PANCREAS_0017,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000683,pancreas_016,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000684,s0924,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000685,21_image,CHAOS,healthy,healthy,healthy
+BDMAP_00000686,PETCT_94962fe878,autoPET,unknown,unknown,unknown
+BDMAP_00000687,case_00122,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000688,s0392,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000689,TCIAColon_0073_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000690,colon_142,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000691,PETCT_41f4d41517,autoPET,unknown,unknown,unknown
+BDMAP_00000692,pancreas_293,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000693,pancreas_038,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000694,amos_0147,AMOS,unknown,unknown,unknown
+BDMAP_00000695,hepaticvessel_207,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000696,pancreas_309,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000697,PETCT_94cc0dac49,autoPET,unknown,unknown,unknown
+BDMAP_00000698,case_00555,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000699,PETCT_1f2a4f4280,autoPET,unknown,unknown,unknown
+BDMAP_00000700,amos_0166,AMOS,unknown,unknown,unknown
+BDMAP_00000701,pancreas_326,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000702,TCIAColon_0096_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000703,hepaticvessel_445,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000704,PETCT_cc1698663a,autoPET,unknown,unknown,unknown
+BDMAP_00000705,PETCT_0b57b247b6,autoPET,unknown,unknown,unknown
+BDMAP_00000706,case_00149,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000707,hepaticvessel_381,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000708,s0894,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000709,liver_124,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000710,case_00524,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000711,PETCT_fbd907a179,autoPET,unknown,unknown,unknown
+BDMAP_00000712,hepaticvessel_359,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000713,case_00177,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000714,pancreas_361,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000715,pancreas_328,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000716,colon_185,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000717,colon_013,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000718,PETCT_3a40a26443,autoPET,unknown,unknown,unknown
+BDMAP_00000719,word_0002,WORD,unknown,unknown,unknown
+BDMAP_00000720,TCIAColon_0014_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000721,spleen_52,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00000722,s0194,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000723,PETCT_46ee4ddd68,autoPET,unknown,unknown,unknown
+BDMAP_00000724,case_00058,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000725,case_00072,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000726,s0699,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000727,s0698,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000728,Case_00812_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000729,amos_0279,AMOS,unknown,unknown,unknown
+BDMAP_00000730,TCIAColon_0009_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000731,lung_045,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000732,PETCT_dc6174cb5d,autoPET,unknown,unknown,unknown
+BDMAP_00000733,FLARE23_Ts_0010_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000734,s0500,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000735,pancreas_185,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000736,PETCT_a19ef8e0d2,autoPET,unknown,unknown,unknown
+BDMAP_00000737,liver_141,MSD-Liver,unknown,unknown,unknown
+BDMAP_00000738,TCIAColon_0199_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000739,TCIAColon_0296_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00000740,FLARE23_Ts_0045_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000741,PETCT_21e4ffcb52,autoPET,unknown,unknown,unknown
+BDMAP_00000742,CPTAC-PDA-C3N-02697_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000743,s0314,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000744,FLARE23_Ts_0042_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000745,liver_86,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000746,PETCT_d626611daf,autoPET,unknown,unknown,unknown
+BDMAP_00000747,PETCT_db3bac356a,autoPET,unknown,unknown,unknown
+BDMAP_00000748,Case_00397_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000749,pancreas_238,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000750,TCIAColon_0216_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000751,case_00187,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000752,amos_0361,AMOS,unknown,unknown,unknown
+BDMAP_00000753,PETCT_f4668d2bdc,autoPET,unknown,unknown,unknown
+BDMAP_00000754,NIH-LYMPH-ABD-073_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000755,TCIAColon_0297_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000756,case_00228,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000757,28_image,CHAOS,healthy,healthy,healthy
+BDMAP_00000758,CPTAC-CCRCC-C3L-00815_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000759,PETCT_1cb2d26a19,autoPET,unknown,unknown,unknown
+BDMAP_00000760,Case_00969_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000761,TCIAColon_0113_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000762,lung_026,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000763,s1264,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000764,PANCREAS_0028,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000765,Case_00886_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000766,amos_0239,AMOS,unknown,unknown,unknown
+BDMAP_00000767,PETCT_38733c001e,autoPET,unknown,unknown,unknown
+BDMAP_00000768,hepaticvessel_042,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000769,PETCT_2122b88719,autoPET,unknown,unknown,unknown
+BDMAP_00000770,Case_01062_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000771,pancreas_392,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000772,PETCT_ac700ab4db,autoPET,unknown,unknown,unknown
+BDMAP_00000773,case_00285,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000774,pancreas_419,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000775,PETCT_960c5f4262,autoPET,unknown,unknown,unknown
+BDMAP_00000776,s0016,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000777,lung_004,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000778,liver_75,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000779,hepaticvessel_379,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000780,PETCT_a87dda9193,autoPET,unknown,unknown,unknown
+BDMAP_00000781,PETCT_d3208ff062,autoPET,unknown,unknown,unknown
+BDMAP_00000782,TCIAColon_0148_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000783,CPTAC-PDA-C3N-01714_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000784,TCIAColon_0153_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000785,colon_147,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000786,TCIAColon_0283_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000787,NIH-LYMPH-ABD-080_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000788,case_00159,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000789,pancreas_442,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000790,CPTAC-UCEC-C3N-01003_0_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00000791,TCIAColon_0190_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000792,PETCT_01140d52d8,autoPET,unknown,unknown,unknown
+BDMAP_00000793,TCIAColon_0015_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000794,case_00025,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000795,Case_00949_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000796,s1153,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000797,TCIAColon_0248_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000798,TCIAColon_0095_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000799,PETCT_07574bfa00,autoPET,unknown,unknown,unknown
+BDMAP_00000800,s0147,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000801,TCIAColon_0050_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000802,amos_0083,AMOS,unknown,unknown,unknown
+BDMAP_00000803,TCIAColon_0066_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000804,colon_101,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000805,case_00466,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000806,word_0075,WORD,unknown,unknown,unknown
+BDMAP_00000807,CPTAC-CCRCC-C3N-00491_0_7,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000808,s1366,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000809,pancreas_347,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000810,case_00277,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000811,PETCT_1fe6e48293,autoPET,unknown,unknown,unknown
+BDMAP_00000812,case_00059,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000813,hepaticvessel_341,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000814,PETCT_97320b0b58,autoPET,unknown,unknown,unknown
+BDMAP_00000815,PETCT_e1a5b05186,autoPET,unknown,unknown,unknown
+BDMAP_00000816,colon_204,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000817,PETCT_47cd731006,autoPET,unknown,unknown,unknown
+BDMAP_00000818,word_0132,WORD,unknown,unknown,unknown
+BDMAP_00000819,Case_00671_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000820,pancreas_474,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000821,img0028,BTCV,healthy,healthy,healthy
+BDMAP_00000822,amos_0410,AMOS,unknown,unknown,unknown
+BDMAP_00000823,spleen_42,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00000824,PETCT_7958ce0f7c,autoPET,unknown,unknown,unknown
+BDMAP_00000825,TCIAColon_0120_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000826,case_00240,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000827,liver_90,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000828,colon_202,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000829,pancreas_317,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000830,PETCT_0f4ee9e078,autoPET,unknown,unknown,unknown
+BDMAP_00000831,liver_97,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000832,hepaticvessel_304,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000833,case_00015,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000834,case_00036,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000835,s0358,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000836,case_00296,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000837,case_00242,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000838,word_0028,WORD,unknown,unknown,unknown
+BDMAP_00000839,case_00471,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000840,PETCT_dae86b88e2,autoPET,unknown,unknown,unknown
+BDMAP_00000841,FLARE23_Ts_0008_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000842,s0502,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000843,case_00220,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000844,PETCT_a933c9af60,autoPET,unknown,unknown,unknown
+BDMAP_00000845,amos_0133,AMOS,unknown,unknown,unknown
+BDMAP_00000846,PANCREAS_0033,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000847,PETCT_5c57a98a43,autoPET,unknown,unknown,unknown
+BDMAP_00000848,PETCT_e4e5baf901,autoPET,unknown,unknown,unknown
+BDMAP_00000849,TCGA-OV-61-2003_0_3,TCGA-OV,unknown,unknown,unknown
+BDMAP_00000850,TCIAColon_0245_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000851,colon_100,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000852,PETCT_8ec13728df,autoPET,unknown,unknown,unknown
+BDMAP_00000853,Case_00449_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000854,TCIAColon_0140_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000855,pancreas_336,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000856,hepaticvessel_317,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000857,colon_123,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000858,PETCT_c58b637e17,autoPET,unknown,unknown,unknown
+BDMAP_00000859,pancreas_243,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000860,TCIAColon_0032_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000861,22_image,CHAOS,healthy,healthy,healthy
+BDMAP_00000862,CPTAC-UCEC-C3N-00866_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00000863,TCIAColon_0069_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000864,TCIAColon_0149_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00000865,amos_0391,AMOS,unknown,unknown,unknown
+BDMAP_00000866,hepaticvessel_136,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000867,case_00265,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000868,PETCT_d64d6a87c8,autoPET,unknown,unknown,unknown
+BDMAP_00000869,TCIAColon_0084_0_6,TCIAColon,unknown,unknown,unknown
+BDMAP_00000870,s0299,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000871,case_00210,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000872,lung_095,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000873,colon_149,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000874,colon_024,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000875,word_0119,WORD,unknown,unknown,unknown
+BDMAP_00000876,TCIAColon_0022_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000877,hepaticvessel_019,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000878,PANCREAS_0006,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000879,pancreas_455,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000880,PETCT_ce629e2993,autoPET,unknown,unknown,unknown
+BDMAP_00000881,colon_187,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000882,pancreas_343,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000883,case_00178,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000884,word_0116,WORD,unknown,unknown,unknown
+BDMAP_00000885,CPTAC-UCEC-C3N-01008_0_9,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00000886,s1403,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000887,case_00087,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000888,TCIAColon_0113_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000889,case_00428,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000890,lung_006,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000891,Case_00684_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000892,Case_00060_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000893,s0859,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000894,hepaticvessel_165,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000895,pancreas_426,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000896,PETCT_f24f3ce1da,autoPET,unknown,unknown,unknown
+BDMAP_00000897,hepaticvessel_094,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000898,s0059,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000899,NIH-LYMPH-ABD-072_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000900,hepaticvessel_059,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000901,Case_00903_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000902,case_00288,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000903,PETCT_9c9a347388,autoPET,unknown,unknown,unknown
+BDMAP_00000904,TCIAColon_0024_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00000905,TCIAColon_0123_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000906,hepaticvessel_435,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000907,liver_121,LiTS,unhealthy,unknown,unknown
+BDMAP_00000908,CPTAC-CCRCC-C3N-00380_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000909,s0108,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000910,TCIAColon_0200_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000911,hepaticvessel_393,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00000912,FLARE23_Ts_0009_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000913,colon_219,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000914,liver_176,MSD-Liver,unknown,unknown,unknown
+BDMAP_00000915,hepaticvessel_362,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000916,case_00172,KiTS19,unknown,unknown,unhealthy
+BDMAP_00000917,NIH-LYMPH-ABD-059_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00000918,liver_43,LiTS,unhealthy,unknown,unknown
+BDMAP_00000919,PETCT_824c6a0014,autoPET,unknown,unknown,unknown
+BDMAP_00000920,PETCT_44cfacfd6e,autoPET,unknown,unknown,unknown
+BDMAP_00000921,liver_42,LiTS,unhealthy,unknown,unknown
+BDMAP_00000922,PETCT_6fe855c937,autoPET,unknown,unknown,unknown
+BDMAP_00000923,case_00417,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000924,hepaticvessel_227,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000925,PETCT_3c3050f75e,autoPET,unknown,unknown,unknown
+BDMAP_00000926,case_00155,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000927,FLARE23_Ts_0099_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000928,PANCREAS_0018,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00000929,colon_174,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000930,CPTAC-PDA-C3N-03430_1_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00000931,CPTAC-CCRCC-C3N-00491_0_9,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00000932,TCIAColon_0127_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00000933,PETCT_bd7603e9df,autoPET,unknown,unknown,unknown
+BDMAP_00000934,TCIAColon_0092_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000935,case_00484,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000936,case_00269,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000937,colon_087,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000938,pancreas_223,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00000939,colon_099,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000940,pancreas_236,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000941,liver_127,LiTS,unhealthy,unknown,unknown
+BDMAP_00000942,colon_032,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000943,hepaticvessel_428,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000944,TCIAColon_0227_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000945,TCIAColon_0182_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000946,hepaticvessel_410,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000947,hepaticvessel_088,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000948,case_00211,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000949,lung_049,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000950,PETCT_aaf2c3aa12,autoPET,unknown,unknown,unknown
+BDMAP_00000951,CPTAC-UCEC-C3N-01008_1_12,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00000952,word_0049,WORD,unknown,unknown,unknown
+BDMAP_00000953,Case_00250_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000954,TCIAColon_0019_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000955,lung_071,MSD-Lung,unknown,unknown,unknown
+BDMAP_00000956,pancreas_117,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000957,Case_00220_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000958,s0649,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000959,hepaticvessel_217,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000960,amos_0014,AMOS,unknown,unknown,unknown
+BDMAP_00000961,Case_00746_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000962,word_0085,WORD,unknown,unknown,unknown
+BDMAP_00000963,PETCT_d3d3b7d4ff,autoPET,unknown,unknown,unknown
+BDMAP_00000964,s1044,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000965,liver_79,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000966,TCIAColon_0211_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00000967,LDCT-L209_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00000968,case_00246,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000969,s0139,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000970,s0412,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000971,liver_109,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00000972,pancreas_040,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000973,Case_00876_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00000974,hepaticvessel_001,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00000975,amos_0077,AMOS,unknown,unknown,unknown
+BDMAP_00000976,TCGA-BLCA-DK-A1AA_0_1,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00000977,case_00551,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000978,PETCT_e2834e6f5c,autoPET,unknown,unknown,unknown
+BDMAP_00000979,PETCT_3f3df20439,autoPET,unknown,unknown,unknown
+BDMAP_00000980,case_00507,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000981,hepaticvessel_105,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000982,case_00193,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000983,PETCT_9f206193d3,autoPET,unknown,unknown,unknown
+BDMAP_00000984,PETCT_770ee48d09,autoPET,unknown,unknown,unknown
+BDMAP_00000985,FLARE23_Ts_0013_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00000986,TCIAColon_0248_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00000987,case_00249,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000988,colon_018,MSD-Colon,unknown,unknown,unknown
+BDMAP_00000989,case_00171,KiTS21,unknown,unknown,unhealthy
+BDMAP_00000990,PETCT_389c968170,autoPET,unknown,unknown,unknown
+BDMAP_00000991,s0193,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000992,PETCT_5a58935b68,autoPET,unknown,unknown,unknown
+BDMAP_00000993,pancreas_304,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00000994,hepaticvessel_339,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00000995,s1123,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000996,s1296,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000997,s1273,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00000998,case_00528,KiTS23,unknown,unknown,unhealthy
+BDMAP_00000999,s0476,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001000,PETCT_43c9c71b31,autoPET,unknown,unknown,unknown
+BDMAP_00001001,case_00531,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001002,PANCREAS_0026,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001003,hepaticvessel_131,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001004,LDCT-L232_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00001005,liver_188,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001006,TCIAColon_0133_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001007,s0625,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001008,PETCT_f0a1a38a3b,autoPET,unknown,unknown,unknown
+BDMAP_00001009,TCGA-OV-61-1998_1_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00001010,liver_70,LiTS,unhealthy,unknown,unknown
+BDMAP_00001011,word_0130,WORD,unknown,unknown,unknown
+BDMAP_00001012,hepaticvessel_033,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001013,PETCT_e5d50c5569,autoPET,unknown,unknown,unknown
+BDMAP_00001014,TCIAColon_0160_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001015,colon_118,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001016,hepaticvessel_161,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001017,PETCT_ac11b344b6,autoPET,unknown,unknown,unknown
+BDMAP_00001018,liver_112,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001019,PETCT_846c1af245,autoPET,unknown,unknown,unknown
+BDMAP_00001020,case_00020,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001021,colon_153,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001022,TCIAColon_0274_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001023,Case_00230_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001024,colon_212,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001025,liver_108,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001026,FLARE23_Ts_0032_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001027,case_00022,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001028,PETCT_b5923963ac,autoPET,unknown,unknown,unknown
+BDMAP_00001029,s0760,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001030,pancreas_164,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001031,hepaticvessel_327,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001032,colon_183,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001033,Case_00184_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001034,PETCT_aea7906fd2,autoPET,unknown,unknown,unknown
+BDMAP_00001035,case_00408,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001036,amos_0001,AMOS,unknown,unknown,unknown
+BDMAP_00001037,Case_00450_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001038,pancreas_443,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001039,img0079,BTCV,healthy,healthy,healthy
+BDMAP_00001040,pancreas_218,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001041,FLARE23_Ts_0040_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001042,PETCT_d4b2ff9721,autoPET,unknown,unknown,unknown
+BDMAP_00001043,CPTAC-PDA-C3N-01383_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00001044,TCIAColon_0258_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00001045,case_00516,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001046,TCIAColon_0011_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001047,s1174,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001048,PETCT_83e4c5b578,autoPET,unknown,unknown,unknown
+BDMAP_00001049,s0991,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001050,case_00254,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001051,PETCT_48a34ccdf0,autoPET,unknown,unknown,unknown
+BDMAP_00001052,TCIAColon_0044_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00001053,amos_0199,AMOS,unknown,unknown,unknown
+BDMAP_00001054,s1373,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001055,liver_116,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001056,PETCT_d4112bc7ba,autoPET,unknown,unknown,unknown
+BDMAP_00001057,pancreas_058,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001058,s1294,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001059,case_00490,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001060,PETCT_607c1b38e3,autoPET,unknown,unknown,unknown
+BDMAP_00001061,25_image,CHAOS,healthy,healthy,healthy
+BDMAP_00001062,PETCT_d8d9e52cd5,autoPET,unknown,unknown,unknown
+BDMAP_00001063,PETCT_55d55902c6,autoPET,unknown,unknown,unknown
+BDMAP_00001064,CPTAC-PDA-C3N-03430_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00001065,hepaticvessel_333,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001066,TCIAColon_0250_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001067,pancreas_296,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001068,case_00010,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001069,pancreas_017,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001070,amos_0317,AMOS,unknown,unknown,unknown
+BDMAP_00001071,FLARE23_Ts_0098_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001072,Case_00525_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001073,s0937,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001074,img0030,BTCV,healthy,healthy,healthy
+BDMAP_00001075,case_00115,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001076,word_0013,WORD,unknown,unknown,unknown
+BDMAP_00001077,case_00451,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001078,colon_007,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001079,volume-116,CT-ORG,unknown,unknown,unknown
+BDMAP_00001080,PETCT_5109748328,autoPET,unknown,unknown,unknown
+BDMAP_00001081,TCIAColon_0136_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001082,s1082,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001083,PETCT_a0c4dc1ef1,autoPET,unknown,unknown,unknown
+BDMAP_00001084,TCIAColon_0132_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001085,NIH-LYMPH-ABD-065_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001086,Case_00726_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001087,TCIAColon_0138_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001088,lung_022,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001089,case_00161,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001090,PETCT_0af7ffe12a,autoPET,unknown,unknown,unknown
+BDMAP_00001091,TCIAColon_0048_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001092,pancreas_127,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001093,liver_81,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001094,PETCT_8f2878df50,autoPET,unknown,unknown,unknown
+BDMAP_00001095,colon_214,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001096,pancreas_284,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001097,hepaticvessel_180,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001098,PETCT_54977a7e76,autoPET,unknown,unknown,unknown
+BDMAP_00001099,Case_00804_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001100,amos_0282,AMOS,unknown,unknown,unknown
+BDMAP_00001101,word_0134,WORD,unknown,unknown,unknown
+BDMAP_00001102,colon_119,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001103,Case_00926_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001104,case_00447,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001105,volume-73,CT-ORG,unknown,unknown,unknown
+BDMAP_00001106,PETCT_13d0984c93,autoPET,unknown,unknown,unknown
+BDMAP_00001107,case_00247,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001108,TCIAColon_0006_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001109,case_00429,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001110,TCIAColon_0244_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001111,spleen_29,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001112,CPTAC-PDA-C3N-03670_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00001113,Case_00811_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001114,liver_43,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001115,Case_00304_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001116,hepaticvessel_329,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001117,FLARE23_Ts_0083_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001118,pancreas_118,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001119,case_00212,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001120,PETCT_ea42c88cc7,autoPET,unknown,unknown,unknown
+BDMAP_00001121,liver_186,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001122,liver_51,LiTS,unhealthy,unknown,unknown
+BDMAP_00001123,s0089,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001124,PETCT_8aa48809ea,autoPET,unknown,unknown,unknown
+BDMAP_00001125,pancreas_418,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001126,case_00107,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001127,PETCT_f01e83894d,autoPET,unknown,unknown,unknown
+BDMAP_00001128,case_00238,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001129,PETCT_73597f33fe,autoPET,unknown,unknown,unknown
+BDMAP_00001130,case_00094,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001131,hepaticvessel_287,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001132,TCIAColon_0173_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001133,volume-137,CT-ORG,unknown,unknown,unknown
+BDMAP_00001134,hepaticvessel_009,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001135,TCIAColon_0054_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001136,hepaticvessel_313,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001137,s1235,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001138,case_00095,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001139,TCIAColon_0296_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00001140,PETCT_9a83943958,autoPET,unknown,unknown,unknown
+BDMAP_00001141,hepaticvessel_388,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001142,PETCT_173b804eda,autoPET,unknown,unknown,unknown
+BDMAP_00001143,liver_201,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001144,s0747,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001145,Case_00680_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001146,lung_027,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001147,PETCT_a471649d35,autoPET,unknown,unknown,unknown
+BDMAP_00001148,case_00425,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001149,hepaticvessel_130,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001150,TCIAColon_0281_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00001151,amos_0336,AMOS,unknown,unknown,unknown
+BDMAP_00001152,colon_023,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001153,s0042,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001154,hepaticvessel_151,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001155,pancreas_332,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001156,TCIAColon_0231_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001157,pancreas_068,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001158,TCGA-OV-OY-A56Q_0_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00001159,TCIAColon_0287_0_7,TCIAColon,unknown,unknown,unknown
+BDMAP_00001160,TCIAColon_0049_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001161,case_00102,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001162,PETCT_979f9c3dba,autoPET,unknown,unknown,unknown
+BDMAP_00001163,PETCT_474d7af918,autoPET,unknown,unknown,unknown
+BDMAP_00001164,pancreas_341,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001165,volume-92,CT-ORG,unknown,unknown,unknown
+BDMAP_00001166,hepaticvessel_400,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001167,hepaticvessel_256,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001168,FLARE23_Ts_0038_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001169,case_00424,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001170,hepaticvessel_203,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001171,liver_21,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001172,hepaticvessel_224,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001173,TCIAColon_0111_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001174,NIH-LYMPH-MED-006_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001175,pancreas_235,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001176,LDCT-L266_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00001177,volume-91,CT-ORG,unknown,unknown,unknown
+BDMAP_00001178,TCIAColon_0170_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001179,s0196,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001180,TCIAColon_0091_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001181,amos_0118,AMOS,unknown,unknown,unknown
+BDMAP_00001182,PETCT_d8e3aa97a0,autoPET,unknown,unknown,unknown
+BDMAP_00001183,case_00545,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001184,case_00239,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001185,liver_99,LiTS,unhealthy,unknown,unknown
+BDMAP_00001186,hepaticvessel_328,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001187,PETCT_f8314eb3f7,autoPET,unknown,unknown,unknown
+BDMAP_00001188,Case_00743_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001189,s0370,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001190,hepaticvessel_229,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001191,lung_029,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001192,CPTAC-CCRCC-C3L-00610_1_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001193,CPTAC-CCRCC-C3L-01954_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001194,TCIAColon_0215_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001195,PETCT_108c1763d4,autoPET,unknown,unknown,unknown
+BDMAP_00001196,amos_0069,AMOS,unknown,unknown,unknown
+BDMAP_00001197,pancreas_349,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001198,liver_10,LiTS,unhealthy,unknown,unknown
+BDMAP_00001199,PETCT_2f2ee78c89,autoPET,unknown,unknown,unknown
+BDMAP_00001200,liver_72,LiTS,unhealthy,unknown,unknown
+BDMAP_00001201,CPTAC-PDA-C3N-01167_0_15,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00001202,PETCT_3481507253,autoPET,unknown,unknown,unknown
+BDMAP_00001203,s0762,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001204,pancreas_240,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001205,pancreas_197,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001206,TCIAColon_0237_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001207,TCIAColon_0287_0_6,TCIAColon,unknown,unknown,unknown
+BDMAP_00001208,FLARE23_Ts_0028_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001209,colon_140,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001210,s1257,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001211,hepaticvessel_389,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001212,colon_098,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001213,img0062,BTCV,healthy,healthy,healthy
+BDMAP_00001214,pancreas_270,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001215,colon_072,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001216,word_0125,WORD,unknown,unknown,unknown
+BDMAP_00001217,amos_0198,AMOS,unknown,unknown,unknown
+BDMAP_00001218,case_00542,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001219,hepaticvessel_423,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001220,lung_065,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001221,PETCT_8af3757198,autoPET,unknown,unknown,unknown
+BDMAP_00001222,PETCT_510fb36781,autoPET,unknown,unknown,unknown
+BDMAP_00001223,case_00139,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001224,CPTAC-CCRCC-C3L-01352_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001225,case_00438,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001226,Case_00980_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001227,PETCT_4011ffe8ae,autoPET,unknown,unknown,unknown
+BDMAP_00001228,hepaticvessel_120,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001229,word_0062,WORD,unknown,unknown,unknown
+BDMAP_00001230,case_00538,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001231,amos_0027,AMOS,unknown,unknown,unknown
+BDMAP_00001232,TCIAColon_0259_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001233,PETCT_5ef99b0b6b,autoPET,unknown,unknown,unknown
+BDMAP_00001234,Case_00819_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001235,Case_00190_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001236,liver_130,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001237,colon_078,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001238,case_00444,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001239,Case_00941_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001240,TCIAColon_0128_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001241,word_0031,WORD,unknown,unknown,unknown
+BDMAP_00001242,case_00209,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001243,PETCT_25707f94a2,autoPET,unknown,unknown,unknown
+BDMAP_00001244,TCIAColon_0056_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001245,word_0032,WORD,unknown,unknown,unknown
+BDMAP_00001246,case_00413,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001247,pancreas_230,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001248,s0623,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001249,hepaticvessel_319,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001250,colon_190,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001251,case_00511,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001252,CPTAC-CCRCC-C3L-01459_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001253,amos_0049,AMOS,unknown,unknown,unknown
+BDMAP_00001254,CPTAC-UCEC-C3N-01171_0_12,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001255,case_00076,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001256,case_00522,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001257,Case_00749_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001258,case_00179,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001259,s1127,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001260,amos_0019,AMOS,unknown,unknown,unknown
+BDMAP_00001261,case_00421,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001262,PETCT_2b29531d8c,autoPET,unknown,unknown,unknown
+BDMAP_00001263,word_0067,WORD,unknown,unknown,unknown
+BDMAP_00001264,PETCT_faf4a6dbaa,autoPET,unknown,unknown,unknown
+BDMAP_00001265,case_00503,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001266,TCIAColon_0151_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001267,TCIAColon_0232_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001268,case_00106,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001269,TCIAColon_0117_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001270,liver_106,LiTS,healthy,unknown,unknown
+BDMAP_00001271,Case_01054_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001272,PETCT_1f65acff65,autoPET,unknown,unknown,unknown
+BDMAP_00001273,case_00453,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001274,TCIAColon_0237_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001275,case_00271,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001276,s0078,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001277,TCIAColon_0290_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001278,hepaticvessel_290,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001279,Case_00044_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001280,PETCT_548213edf7,autoPET,unknown,unknown,unknown
+BDMAP_00001281,case_00105,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001282,hepaticvessel_430,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001283,case_00195,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001284,s1371,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001285,amos_0294,AMOS,unknown,unknown,unknown
+BDMAP_00001286,case_00431,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001287,PETCT_802f19931c,autoPET,unknown,unknown,unknown
+BDMAP_00001288,pancreas_253,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001289,case_00046,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001290,TCIAColon_0059_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00001291,TCIAColon_0054_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001292,s1045,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001293,CPTAC-UCEC-C3N-00734_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001294,PETCT_38a374d01a,autoPET,unknown,unknown,unknown
+BDMAP_00001295,s0137,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001296,case_00294,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001297,TCIAColon_0193_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001298,word_0070,WORD,unknown,unknown,unknown
+BDMAP_00001299,PETCT_c094a24c03,autoPET,unknown,unknown,unknown
+BDMAP_00001300,s0015,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001301,CPTAC-PDA-C3N-02997_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00001302,PETCT_58f276897e,autoPET,unknown,unknown,unknown
+BDMAP_00001303,s0052,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001304,hepaticvessel_102,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001305,case_00547,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001306,spleen_40,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001307,PETCT_5001354a69,autoPET,unknown,unknown,unknown
+BDMAP_00001308,s0168,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001309,liver_112,LiTS,unhealthy,unknown,unknown
+BDMAP_00001310,Case_00547_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001311,TCIAColon_0142_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001312,TCIAColon_0254_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001313,PETCT_44b08f570e,autoPET,unknown,unknown,unknown
+BDMAP_00001314,PETCT_7c1e6175e0,autoPET,unknown,unknown,unknown
+BDMAP_00001315,TCGA-SARC-A5V2_0_1,TCGA-SARC,unknown,unknown,unknown
+BDMAP_00001316,liver_28,LiTS,unhealthy,unknown,unknown
+BDMAP_00001317,TCIAColon_0084_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001318,PETCT_437d2c96fe,autoPET,unknown,unknown,unknown
+BDMAP_00001319,PETCT_e68c4577d8,autoPET,unknown,unknown,unknown
+BDMAP_00001320,s0320,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001321,s0546,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001322,PETCT_4be28f9cd7,autoPET,unknown,unknown,unknown
+BDMAP_00001323,hepaticvessel_096,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001324,case_00559,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001325,case_00248,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001326,TCIAColon_0286_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00001327,PETCT_43323b7d42,autoPET,unknown,unknown,unknown
+BDMAP_00001328,CPTAC-CCRCC-C3L-00815_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001329,hepaticvessel_190,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001330,s1230,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001331,pancreas_297,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001332,hepaticvessel_262,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001333,liver_102,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001334,TCIAColon_0193_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00001335,PETCT_7ef5343426,autoPET,unknown,unknown,unknown
+BDMAP_00001336,s0508,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001337,TCIAColon_0276_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001338,colon_010,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001339,Case_00041_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001340,NIH-LYMPH-ABD-020_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001341,hepaticvessel_039,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001342,TCIAColon_0130_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001343,liver_104,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001344,PETCT_34d3efa936,autoPET,unknown,unknown,unknown
+BDMAP_00001345,s0416,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001346,hepaticvessel_022,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001347,s0639,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001348,PANCREAS_0031,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001349,PETCT_fcdbe15200,autoPET,unknown,unknown,unknown
+BDMAP_00001350,s1212,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001351,PETCT_19b68a666b,autoPET,unknown,unknown,unknown
+BDMAP_00001352,case_00108,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001353,18_image,CHAOS,healthy,healthy,healthy
+BDMAP_00001354,s0461,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001355,TCIAColon_0167_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001356,s0485,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001357,PETCT_9860ffe82d,autoPET,unknown,unknown,unknown
+BDMAP_00001358,hepaticvessel_310,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001359,case_00138,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001360,CPTAC-PDA-C3N-03426_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00001361,pancreas_158,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001362,liver_74,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001363,Case_01044_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001364,hepaticvessel_259,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001365,amos_0161,AMOS,unknown,unknown,unknown
+BDMAP_00001366,PETCT_75d5e740f0,autoPET,unknown,unknown,unknown
+BDMAP_00001367,PETCT_2a41141775,autoPET,unknown,unknown,unknown
+BDMAP_00001368,pancreas_213,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001369,s1161,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001370,case_00262,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001371,TCIAColon_0117_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001372,TCIAColon_0261_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001373,PETCT_5255c79083,autoPET,unknown,unknown,unknown
+BDMAP_00001374,s0571,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001375,PETCT_4b688f46b0,autoPET,unknown,unknown,unknown
+BDMAP_00001376,case_00211,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001377,s1285,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001378,PETCT_e52eca67d7,autoPET,unknown,unknown,unknown
+BDMAP_00001379,liver_0,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001380,case_00240,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001381,Case_00786_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001382,hepaticvessel_416,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001383,case_00000,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001384,Case_01041_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001385,PETCT_176bdc5388,autoPET,unknown,unknown,unknown
+BDMAP_00001386,PETCT_4076ea9a15,autoPET,unknown,unknown,unknown
+BDMAP_00001387,s0328,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001388,TCIAColon_0072_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001389,liver_138,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001390,PETCT_7d97f7a102,autoPET,unknown,unknown,unknown
+BDMAP_00001391,hepaticvessel_350,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001392,TCIAColon_0038_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001393,TCIAColon_0089_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001394,hepaticvessel_029,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001395,hepaticvessel_397,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001396,case_00565,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001397,liver_47,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001398,TCIAColon_0291_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001399,s1173,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001400,amos_0141,AMOS,unknown,unknown,unknown
+BDMAP_00001401,TCIAColon_0102_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00001402,FLARE23_Ts_0024_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001403,Case_00950_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001404,PETCT_bf178a41b2,autoPET,unknown,unknown,unknown
+BDMAP_00001405,TCIAColon_0042_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001406,PETCT_d4d3d7dfc1,autoPET,unknown,unknown,unknown
+BDMAP_00001407,PETCT_bd52fdf529,autoPET,unknown,unknown,unknown
+BDMAP_00001408,PETCT_3c94a00f90,autoPET,unknown,unknown,unknown
+BDMAP_00001409,hepaticvessel_441,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001410,case_00089,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001411,PETCT_2f7200f771,autoPET,unknown,unknown,unknown
+BDMAP_00001412,pancreas_437,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001413,case_00096,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001414,pancreas_405,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001415,s0692,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001416,PETCT_99e5728030,autoPET,unknown,unknown,unknown
+BDMAP_00001417,img0025,BTCV,healthy,healthy,healthy
+BDMAP_00001418,s0511,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001419,pancreas_413,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001420,case_00480,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001421,PETCT_05bed31780,autoPET,unknown,unknown,unknown
+BDMAP_00001422,case_00004,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001423,s0675,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001424,s0390,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001425,PETCT_e9feb1135e,autoPET,unknown,unknown,unknown
+BDMAP_00001426,colon_115,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001427,hepaticvessel_147,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001428,CPTAC-UCEC-C3N-00866_1_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001429,TCGA-BLCA-DK-A1A7_0_3,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00001430,TCIAColon_0009_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001431,PETCT_05d8640f52,autoPET,unknown,unknown,unknown
+BDMAP_00001432,FLARE23_Ts_0005_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001433,spleen_50,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001434,case_00134,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001435,Case_00240_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001436,spleen_11,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001437,hepaticvessel_168,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001438,colon_031,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001439,PETCT_5fa9d9a820,autoPET,unknown,unknown,unknown
+BDMAP_00001440,pancreas_222,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001441,pancreas_308,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001442,amos_0392,AMOS,unknown,unknown,unknown
+BDMAP_00001443,LDCT-L220_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00001444,case_00150,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001445,colon_206,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001446,pancreas_420,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001447,img0036,BTCV,healthy,healthy,healthy
+BDMAP_00001448,TCIAColon_0277_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001449,amos_0079,AMOS,unknown,unknown,unknown
+BDMAP_00001450,Case_00947_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001451,hepaticvessel_024,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001452,PETCT_f1594a7d8a,autoPET,unknown,unknown,unknown
+BDMAP_00001453,hepaticvessel_368,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001454,s0720,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001455,PETCT_5c1baad5d8,autoPET,unknown,unknown,unknown
+BDMAP_00001456,case_00077,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001457,PETCT_23ed525e82,autoPET,unknown,unknown,unknown
+BDMAP_00001458,CPTAC-UCEC-C3L-01744_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001459,s0441,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001460,PETCT_424e9b79c5,autoPET,unknown,unknown,unknown
+BDMAP_00001461,pancreas_310,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001462,colon_048,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001463,PETCT_b41bc7c1e5,autoPET,unknown,unknown,unknown
+BDMAP_00001464,pancreas_258,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001465,case_00150,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001466,Case_00922_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001467,lung_059,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001468,s1382,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001469,PETCT_5e8b013935,autoPET,unknown,unknown,unknown
+BDMAP_00001470,TCIAColon_0175_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001471,liver_78,LiTS,unhealthy,unknown,unknown
+BDMAP_00001472,s0213,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001473,CPTAC-PDA-C3N-01907_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00001474,case_00259,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001475,case_00287,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001476,pancreas_087,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001477,TCIAColon_0177_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001478,Case_00831_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001479,FLARE23_Ts_0086_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001480,PETCT_42e9f16c09,autoPET,unknown,unknown,unknown
+BDMAP_00001481,colon_076,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001482,hepaticvessel_386,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001483,case_00563,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001484,lung_078,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001485,TCIAColon_0228_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001486,PETCT_b510436d83,autoPET,unknown,unknown,unknown
+BDMAP_00001487,case_00266,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001488,volume-83,CT-ORG,unknown,unknown,unknown
+BDMAP_00001489,NIH-LYMPH-ABD-048_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001490,PETCT_ebaa30ba2e,autoPET,unknown,unknown,unknown
+BDMAP_00001491,pancreas_237,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001492,s0031,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001493,FLARE23_Ts_0062_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001494,s1319,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001495,word_0128,WORD,unknown,unknown,unknown
+BDMAP_00001496,case_00162,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001497,TCIAColon_0209_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001498,img0063,BTCV,healthy,healthy,healthy
+BDMAP_00001499,TCIAColon_0183_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001500,CPTAC-CCRCC-C3L-01465_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001501,Case_01032_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001502,liver_91,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001503,word_0115,WORD,unknown,unknown,unknown
+BDMAP_00001504,pancreas_010,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001505,TCIAColon_0187_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001506,hepaticvessel_270,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001507,hepaticvessel_025,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001508,Case_00019_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001509,colon_021,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001510,hepaticvessel_100,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001511,case_00462,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001512,Case_00223_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001513,PETCT_2202a936e0,autoPET,unknown,unknown,unknown
+BDMAP_00001514,colon_122,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001515,PETCT_e69152b6b4,autoPET,unknown,unknown,unknown
+BDMAP_00001516,case_00052,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001517,case_00403,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001518,case_00184,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001519,PETCT_bc80d06f97,autoPET,unknown,unknown,unknown
+BDMAP_00001520,case_00177,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001521,pancreas_276,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001522,case_00257,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001523,pancreas_126,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001524,NIH-LYMPH-ABD-066_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001525,TCGA-BLCA-4Z-AA7M_0_4,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00001526,Case_01040_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001527,PETCT_de118d7ab9,autoPET,unknown,unknown,unknown
+BDMAP_00001528,NIH-LYMPH-MED-013_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001529,TCIAColon_0260_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00001530,case_00164,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001531,TCIAColon_0233_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001532,PETCT_5c55b3087d,autoPET,unknown,unknown,unknown
+BDMAP_00001533,case_00208,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001534,TCIAColon_0051_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001535,colon_105,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001536,PETCT_55819a54c2,autoPET,unknown,unknown,unknown
+BDMAP_00001537,PETCT_2140db0ca5,autoPET,unknown,unknown,unknown
+BDMAP_00001538,liver_137,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001539,liver_57,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001540,FLARE23_Ts_0050_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001541,TCIAColon_0001_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001542,PETCT_2e97a9e5c2,autoPET,unknown,unknown,unknown
+BDMAP_00001543,PETCT_b899150306,autoPET,unknown,unknown,unknown
+BDMAP_00001544,PETCT_1fcfa34d10,autoPET,unknown,unknown,unknown
+BDMAP_00001545,pancreas_331,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001546,s0039,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001547,Case_01057_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001548,PETCT_bf7652bccc,autoPET,unknown,unknown,unknown
+BDMAP_00001549,case_00558,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001550,Case_00802_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001551,PETCT_41fadf6520,autoPET,unknown,unknown,unknown
+BDMAP_00001552,PETCT_595975bc57,autoPET,unknown,unknown,unknown
+BDMAP_00001553,PETCT_2a6f4f0753,autoPET,unknown,unknown,unknown
+BDMAP_00001554,TCIAColon_0229_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001555,s0332,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001556,amos_0036,AMOS,unknown,unknown,unknown
+BDMAP_00001557,case_00264,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001558,hepaticvessel_437,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001559,TCIAColon_0156_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001560,hepaticvessel_178,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001561,amos_0023,AMOS,unknown,unknown,unknown
+BDMAP_00001562,case_00561,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001563,case_00292,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001564,pancreas_203,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001565,pancreas_159,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001566,PETCT_1553bd8c8f,autoPET,unknown,unknown,unknown
+BDMAP_00001567,Case_00960_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001568,CPTAC-CCRCC-C3N-00244_0_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001569,s0648,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001570,s1085,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001571,PETCT_43647ff727,autoPET,unknown,unknown,unknown
+BDMAP_00001572,TCIAColon_0190_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001573,TCIAColon_0243_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001574,PETCT_5b0aa4e971,autoPET,unknown,unknown,unknown
+BDMAP_00001575,PETCT_75210090cd,autoPET,unknown,unknown,unknown
+BDMAP_00001576,pancreas_171,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001577,hepaticvessel_278,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001578,FLARE23_Ts_0020_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001579,s1058,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001580,PETCT_44b95650c3,autoPET,unknown,unknown,unknown
+BDMAP_00001581,Case_00742_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001582,s0054,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001583,hepaticvessel_271,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001584,pancreas_004,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001585,TCIAColon_0096_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001586,liver_152,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001587,PETCT_9775598501,autoPET,unknown,unknown,unknown
+BDMAP_00001588,Case_00078_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001589,hepaticvessel_054,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001590,pancreas_224,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001591,PETCT_ae3074834a,autoPET,unknown,unknown,unknown
+BDMAP_00001592,TCIAColon_0266_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001593,hepaticvessel_425,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001594,lung_010,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001595,hepaticvessel_267,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001596,PETCT_7b9d625330,autoPET,unknown,unknown,unknown
+BDMAP_00001597,pancreas_125,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001598,colon_029,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001599,s1287,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001600,colon_209,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001601,NIH-LYMPH-ABD-074_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001602,case_00407,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001603,PETCT_53ccb9efbb,autoPET,unknown,unknown,unknown
+BDMAP_00001604,TCIAColon_0269_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001605,pancreas_099,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001606,s0135,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001607,case_00450,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001608,s0080,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001609,TCIAColon_0131_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001610,hepaticvessel_061,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001611,word_0046,WORD,unknown,unknown,unknown
+BDMAP_00001612,case_00186,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001613,PETCT_b3d4773f85,autoPET,unknown,unknown,unknown
+BDMAP_00001614,PETCT_1472967bef,autoPET,unknown,unknown,unknown
+BDMAP_00001615,PETCT_0168f65af8,autoPET,unknown,unknown,unknown
+BDMAP_00001616,Case_00939_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001617,pancreas_364,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001618,pancreas_109,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001619,volume-53,CT-ORG,unknown,unknown,unknown
+BDMAP_00001620,case_00255,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001621,TCIAColon_0150_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001622,PETCT_2745fb1adb,autoPET,unknown,unknown,unknown
+BDMAP_00001623,TCIAColon_0295_0_7,TCIAColon,unknown,unknown,unknown
+BDMAP_00001624,case_00220,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001625,hepaticvessel_348,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001626,s0070,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001627,amos_0009,AMOS,unknown,unknown,unknown
+BDMAP_00001628,pancreas_029,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001629,PETCT_e90a287d09,autoPET,unknown,unknown,unknown
+BDMAP_00001630,PETCT_234f8427c0,autoPET,unknown,unknown,unknown
+BDMAP_00001631,hepaticvessel_090,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001632,pancreas_083,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001633,FLARE23_Ts_0087_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001634,spleen_31,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001635,case_00441,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001636,case_00526,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001637,Case_00954_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001638,PETCT_9afd440677,autoPET,unknown,unknown,unknown
+BDMAP_00001639,PETCT_ca47fe5e7d,autoPET,unknown,unknown,unknown
+BDMAP_00001640,amos_0153,AMOS,unknown,unknown,unknown
+BDMAP_00001641,Case_00664_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001642,TCIAColon_0221_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001643,lung_001,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001644,FLARE23_Ts_0065_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001645,hepaticvessel_357,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001646,pancreas_269,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001647,case_00586,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001648,TCIAColon_0044_1_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00001649,pancreas_119,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001650,s0253,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001651,hepaticvessel_197,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001652,PETCT_27ad42f8a9,autoPET,unknown,unknown,unknown
+BDMAP_00001653,TCIAColon_0106_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00001654,CPTAC-CCRCC-C3L-01954_0_8,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001655,amos_0089,AMOS,unknown,unknown,unknown
+BDMAP_00001656,case_00492,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001657,hepaticvessel_254,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001658,liver_192,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001659,s0961,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001660,TCIAColon_0250_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001661,PETCT_d098458d29,autoPET,unknown,unknown,unknown
+BDMAP_00001662,PANCREAS_0007,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001663,PETCT_9d6699f215,autoPET,unknown,unknown,unknown
+BDMAP_00001664,case_00055,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001665,TCIAColon_0080_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001666,PETCT_62405d117c,autoPET,unknown,unknown,unknown
+BDMAP_00001667,s0010,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001668,pancreas_063,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001669,FLARE23_Ts_0006_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001670,CPTAC-UCEC-C3N-01008_1_11,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001671,hepaticvessel_171,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001672,hepaticvessel_231,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001673,Case_00764_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001674,Case_00911_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001675,hepaticvessel_144,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001676,case_00187,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001677,Case_00793_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001678,PETCT_f9c4d4f9ab,autoPET,unknown,unknown,unknown
+BDMAP_00001679,case_00233,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001680,img0061,BTCV,healthy,healthy,healthy
+BDMAP_00001681,word_0091,WORD,unknown,unknown,unknown
+BDMAP_00001682,PETCT_a90955352e,autoPET,unknown,unknown,unknown
+BDMAP_00001683,TCIAColon_0043_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00001684,FLARE23_Ts_0046_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001685,hepaticvessel_002,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001686,TCIAColon_0294_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001687,s0726,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001688,case_00080,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001689,PETCT_265c26907a,autoPET,unknown,unknown,unknown
+BDMAP_00001690,Case_00403_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001691,colon_003,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001692,liver_24,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001693,TCIAColon_0273_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001694,s0260,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001695,PETCT_5d994c3f44,autoPET,unknown,unknown,unknown
+BDMAP_00001696,TCIAColon_0033_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001697,liver_3,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001698,TCIAColon_0041_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001699,liver_96,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001700,amos_0109,AMOS,unknown,unknown,unknown
+BDMAP_00001701,pancreas_215,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001702,TCIAColon_0072_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001703,CPTAC-UCEC-C3L-00938_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001704,pancreas_226,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001705,case_00151,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001706,PETCT_c32e1daf9b,autoPET,unknown,unknown,unknown
+BDMAP_00001707,case_00416,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001708,CPTAC-UCEC-C3L-00962_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001709,hepaticvessel_211,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001710,case_00093,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001711,case_00554,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001712,pancreas_327,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001713,PETCT_674c49778c,autoPET,unknown,unknown,unknown
+BDMAP_00001714,s0266,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001715,colon_037,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001716,pancreas_478,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001717,s1130,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001718,PETCT_8b14e6a819,autoPET,unknown,unknown,unknown
+BDMAP_00001719,TCIAColon_0012_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001720,PETCT_ea0fd89f0f,autoPET,unknown,unknown,unknown
+BDMAP_00001721,hepaticvessel_383,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001722,s0075,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001723,Case_01003_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001724,TCIAColon_0114_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001725,PETCT_0dbf2c2731,autoPET,unknown,unknown,unknown
+BDMAP_00001726,img0078,BTCV,healthy,healthy,healthy
+BDMAP_00001727,PETCT_f15b868db6,autoPET,unknown,unknown,unknown
+BDMAP_00001728,TCIAColon_0267_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001729,TCIAColon_0016_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001730,TCIAColon_0087_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001731,PETCT_8bebb676bf,autoPET,unknown,unknown,unknown
+BDMAP_00001732,colon_022,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001733,TCIAColon_0092_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001734,s0423,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001735,case_00057,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001736,pancreas_334,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001737,colon_145,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001738,s0739,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001739,Case_00059_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001740,amos_0193,AMOS,unknown,unknown,unknown
+BDMAP_00001741,hepaticvessel_401,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001742,PETCT_5420205a5f,autoPET,unknown,unknown,unknown
+BDMAP_00001743,TCIAColon_0122_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00001744,spleen_8,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001745,s0046,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001746,pancreas_103,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001747,case_00489,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001748,pancreas_108,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001749,PETCT_d8a92bafe3,autoPET,unknown,unknown,unknown
+BDMAP_00001750,Case_01017_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001751,TCIAColon_0206_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001752,case_00291,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001753,liver_9,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001754,pancreas_374,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001755,s0327,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001756,TCIAColon_0071_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001757,case_00120,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001758,TCIAColon_0157_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001759,amos_0272,AMOS,unknown,unknown,unknown
+BDMAP_00001760,Case_00882_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001761,hepaticvessel_365,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001762,PETCT_5d6bf1e75f,autoPET,unknown,unknown,unknown
+BDMAP_00001763,TCIAColon_0192_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001764,amos_0374,AMOS,unknown,unknown,unknown
+BDMAP_00001765,PETCT_548bd05667,autoPET,unknown,unknown,unknown
+BDMAP_00001766,liver_107,LiTS,unhealthy,unknown,unknown
+BDMAP_00001767,TCIAColon_0058_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001768,case_00496,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001769,colon_074,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001770,PETCT_9f7c68f5ca,autoPET,unknown,unknown,unknown
+BDMAP_00001771,amos_0017,AMOS,unknown,unknown,unknown
+BDMAP_00001772,case_00020,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001773,s0549,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001774,PANCREAS_0011,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001775,amos_0249,AMOS,unknown,unknown,unknown
+BDMAP_00001776,word_0053,WORD,unknown,unknown,unknown
+BDMAP_00001777,TCIAColon_0292_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001778,TCIAColon_0083_1_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00001779,hepaticvessel_443,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001780,PETCT_30e2b83b74,autoPET,unknown,unknown,unknown
+BDMAP_00001781,PETCT_791ec15924,autoPET,unknown,unknown,unknown
+BDMAP_00001782,case_00509,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001783,PETCT_c787334539,autoPET,unknown,unknown,unknown
+BDMAP_00001784,case_00552,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001785,colon_102,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001786,liver_29,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001787,word_0036,WORD,unknown,unknown,unknown
+BDMAP_00001788,s0237,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001789,PETCT_ab1fa26e5e,autoPET,unknown,unknown,unknown
+BDMAP_00001790,s0091,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001791,case_00123,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001792,TCIAColon_0018_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001793,PETCT_e61c9da258,autoPET,unknown,unknown,unknown
+BDMAP_00001794,case_00519,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001795,PETCT_742a9413db,autoPET,unknown,unknown,unknown
+BDMAP_00001796,PETCT_39159c05c2,autoPET,unknown,unknown,unknown
+BDMAP_00001797,s0602,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001798,FLARE23_Ts_0076_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001799,PETCT_9a66a81ad1,autoPET,unknown,unknown,unknown
+BDMAP_00001800,PETCT_a21200dcba,autoPET,unknown,unknown,unknown
+BDMAP_00001801,hepaticvessel_122,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001802,liver_53,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001803,hepaticvessel_280,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001804,pancreas_198,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001805,word_0106,WORD,unknown,unknown,unknown
+BDMAP_00001806,pancreas_375,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001807,case_00569,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001808,CPTAC-UCEC-C3N-00520_0_8,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001809,colon_168,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001810,liver_106,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001811,hepaticvessel_436,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001812,Case_00841_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001813,liver_66,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001814,spleen_15,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001815,s0553,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001816,pancreas_483,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001817,case_00007,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001818,hepaticvessel_338,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001819,TCIAColon_0247_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001820,PANCREAS_0041,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001821,spleen_3,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001822,PETCT_af119148fe,autoPET,unknown,unknown,unknown
+BDMAP_00001823,pancreas_187,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001824,hepaticvessel_196,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001825,spleen_62,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00001826,case_00142,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001827,hepaticvessel_241,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001828,pancreas_325,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001829,hepaticvessel_107,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001830,hepaticvessel_373,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001831,case_00023,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001832,CPTAC-CCRCC-C3L-01459_1_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001833,PETCT_b1de3d4248,autoPET,unknown,unknown,unknown
+BDMAP_00001834,liver_92,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001835,colon_176,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001836,pancreas_315,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001837,s0471,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001838,s0912,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001839,Case_00738_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001840,PETCT_6d6a193655,autoPET,unknown,unknown,unknown
+BDMAP_00001841,FLARE23_Ts_0007_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001842,pancreas_316,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001843,TCIAColon_0088_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001844,CPTAC-CCRCC-C3N-00313_0_7,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001845,pancreas_388,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001846,word_0010,WORD,unknown,unknown,unknown
+BDMAP_00001847,s1189,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001848,pancreas_144,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001849,hepaticvessel_385,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001850,colon_179,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001851,case_00290,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001852,Case_00724_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001853,case_00201,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001854,colon_132,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001855,amos_0054,AMOS,unknown,unknown,unknown
+BDMAP_00001856,PETCT_790246c76c,autoPET,unknown,unknown,unknown
+BDMAP_00001857,PETCT_7f2a604e03,autoPET,unknown,unknown,unknown
+BDMAP_00001858,PETCT_06a46414eb,autoPET,unknown,unknown,unknown
+BDMAP_00001859,hepaticvessel_244,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001860,PETCT_20a607649d,autoPET,unknown,unknown,unknown
+BDMAP_00001861,hepaticvessel_369,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001862,pancreas_046,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001863,case_00478,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001864,Case_01043_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001865,colon_005,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001866,pancreas_408,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001867,case_00201,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001868,case_00499,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001869,CPTAC-CCRCC-C3N-00194_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001870,Case_00948_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001871,PANCREAS_0019,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001872,s0286,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001873,PETCT_e04b7fa860,autoPET,unknown,unknown,unknown
+BDMAP_00001874,TCIAColon_0160_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001875,colon_027,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001876,hepaticvessel_191,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001877,CPTAC-CCRCC-C3N-00492_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001878,case_00263,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001879,hepaticvessel_091,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001880,PETCT_963a71819a,autoPET,unknown,unknown,unknown
+BDMAP_00001881,TCIAColon_0129_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001882,PETCT_cab58c1fee,autoPET,unknown,unknown,unknown
+BDMAP_00001883,TCIAColon_0105_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001884,hepaticvessel_322,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001885,volume-105,CT-ORG,unknown,unknown,unknown
+BDMAP_00001886,amos_0105,AMOS,unknown,unknown,unknown
+BDMAP_00001887,29_image,CHAOS,healthy,healthy,healthy
+BDMAP_00001888,PETCT_ec581d49ef,autoPET,unknown,unknown,unknown
+BDMAP_00001889,PETCT_e09a20d8fc,autoPET,unknown,unknown,unknown
+BDMAP_00001890,PETCT_d69c3fceba,autoPET,unknown,unknown,unknown
+BDMAP_00001891,case_00505,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001892,case_00152,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001893,PETCT_ce0ffef966,autoPET,unknown,unknown,unknown
+BDMAP_00001894,FLARE23_Ts_0055_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001895,s0069,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001896,Case_00251_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001897,PETCT_d4f3375362,autoPET,unknown,unknown,unknown
+BDMAP_00001898,pancreas_329,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001899,pancreas_430,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001900,PETCT_ad99263bec,autoPET,unknown,unknown,unknown
+BDMAP_00001901,amos_0235,AMOS,unknown,unknown,unknown
+BDMAP_00001902,lung_023,MSD-Lung,unknown,unknown,unknown
+BDMAP_00001903,PETCT_9b9d67b3ff,autoPET,unknown,unknown,unknown
+BDMAP_00001904,hepaticvessel_289,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001905,pancreas_398,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001906,case_00002,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001907,liver_5,LiTS,unhealthy,unknown,unknown
+BDMAP_00001908,case_00532,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001909,hepaticvessel_396,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001910,Case_00690_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001911,case_00026,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001912,pancreas_365,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001913,case_00262,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001914,s0612,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001915,word_0136,WORD,unknown,unknown,unknown
+BDMAP_00001916,pancreas_484,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001917,colon_095,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001918,case_00197,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001919,case_00241,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001920,PETCT_3cf68da275,autoPET,unknown,unknown,unknown
+BDMAP_00001921,pancreas_160,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00001922,colon_070,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001923,PETCT_605369e88d,autoPET,unknown,unknown,unknown
+BDMAP_00001924,colon_131,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001925,PETCT_80b8393c44,autoPET,unknown,unknown,unknown
+BDMAP_00001926,PETCT_30287f520f,autoPET,unknown,unknown,unknown
+BDMAP_00001927,FLARE23_Ts_0031_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001928,hepaticvessel_370,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001929,PETCT_b4e5c1047c,autoPET,unknown,unknown,unknown
+BDMAP_00001930,hepaticvessel_258,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001931,amos_0021,AMOS,unknown,unknown,unknown
+BDMAP_00001932,hepaticvessel_026,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001933,FLARE23_Ts_0081_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001934,s0548,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001935,TCIAColon_0061_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001936,liver_163,MSD-Liver,unknown,unknown,unknown
+BDMAP_00001937,8_image,CHAOS,healthy,healthy,healthy
+BDMAP_00001938,PETCT_c596a50286,autoPET,unknown,unknown,unknown
+BDMAP_00001939,CPTAC-UCEC-C3N-01171_0_11,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00001940,PETCT_d0086487f4,autoPET,unknown,unknown,unknown
+BDMAP_00001941,case_00074,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001942,PANCREAS_0013,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001943,PANCREAS_0034,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00001944,Case_00052_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001945,case_00012,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001946,FLARE23_Ts_0027_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00001947,Case_00024_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001948,TCIAColon_0027_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001949,PETCT_af73b85f2c,autoPET,unknown,unknown,unknown
+BDMAP_00001950,hepaticvessel_015,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00001951,PETCT_345b11778a,autoPET,unknown,unknown,unknown
+BDMAP_00001952,PETCT_8e905366fe,autoPET,unknown,unknown,unknown
+BDMAP_00001953,PETCT_5951afb86e,autoPET,unknown,unknown,unknown
+BDMAP_00001954,TCIAColon_0030_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001955,TCIAColon_0161_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001956,PETCT_a37da9e85d,autoPET,unknown,unknown,unknown
+BDMAP_00001957,liver_126,LiTS,unhealthy,unknown,unknown
+BDMAP_00001958,colon_191,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001959,PETCT_e0fdc6212a,autoPET,unknown,unknown,unknown
+BDMAP_00001960,TCIAColon_0090_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001961,Case_00393_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001962,liver_22,LiTS,unhealthy,unknown,unknown
+BDMAP_00001963,NIH-LYMPH-ABD-045_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00001964,PETCT_95efdaba3c,autoPET,unknown,unknown,unknown
+BDMAP_00001965,s0751,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001966,liver_16,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001967,amos_0138,AMOS,unknown,unknown,unknown
+BDMAP_00001968,colon_158,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001969,TCIAColon_0003_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001970,PETCT_ca58410fad,autoPET,unknown,unknown,unknown
+BDMAP_00001971,amos_0006,AMOS,unknown,unknown,unknown
+BDMAP_00001972,hepaticvessel_268,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00001973,TCIAColon_0282_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001974,s0349,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001975,PETCT_b1aa7ce13e,autoPET,unknown,unknown,unknown
+BDMAP_00001976,TCIAColon_0236_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001977,case_00086,KiTS21,unknown,unknown,unhealthy
+BDMAP_00001978,PETCT_245182006a,autoPET,unknown,unknown,unknown
+BDMAP_00001979,CPTAC-CCRCC-C3L-01352_0_10,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00001980,Case_00448_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00001981,liver_76,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00001982,colon_046,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001983,PETCT_556b56485a,autoPET,unknown,unknown,unknown
+BDMAP_00001984,s1070,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001985,colon_164,MSD-Colon,unknown,unknown,unknown
+BDMAP_00001986,s1336,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00001987,case_00114,KiTS19,unknown,unknown,unhealthy
+BDMAP_00001988,hepaticvessel_240,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00001989,amos_0088,AMOS,unknown,unknown,unknown
+BDMAP_00001990,TCIAColon_0068_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00001991,TCIAColon_0045_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00001992,TCIAColon_0020_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00001993,pancreas_439,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00001994,PETCT_4785066413,autoPET,unknown,unknown,unknown
+BDMAP_00001995,case_00557,KiTS23,unknown,unknown,unhealthy
+BDMAP_00001996,PETCT_c1c9e78e0e,autoPET,unknown,unknown,unknown
+BDMAP_00001997,PETCT_b327726c24,autoPET,unknown,unknown,unknown
+BDMAP_00001998,PETCT_36d8219e3f,autoPET,unknown,unknown,unknown
+BDMAP_00001999,hepaticvessel_010,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002000,hepaticvessel_273,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002001,TCGA-STAD-A8DU_0_3,TCGA-STAD,unknown,unknown,unknown
+BDMAP_00002002,hepaticvessel_215,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002003,hepaticvessel_223,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002004,Case_00697_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002005,PETCT_cdd237e9b3,autoPET,unknown,unknown,unknown
+BDMAP_00002006,PETCT_11e258cc1f,autoPET,unknown,unknown,unknown
+BDMAP_00002007,TCIAColon_0021_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00002008,hepaticvessel_133,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002009,amos_0084,AMOS,unknown,unknown,unknown
+BDMAP_00002010,s0308,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002011,TCIAColon_0068_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002012,FLARE23_Ts_0023_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002013,s0613,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002014,amos_0071,AMOS,unknown,unknown,unknown
+BDMAP_00002015,TCIAColon_0207_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002016,TCIAColon_0244_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002017,case_00064,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002018,PETCT_f068e22258,autoPET,unknown,unknown,unknown
+BDMAP_00002019,img0007,BTCV,healthy,healthy,healthy
+BDMAP_00002020,Case_00465_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002021,pancreas_077,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002022,case_00083,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002023,amos_0264,AMOS,unknown,unknown,unknown
+BDMAP_00002024,word_0030,WORD,unknown,unknown,unknown
+BDMAP_00002025,hepaticvessel_121,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002026,pancreas_177,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002027,CPTAC-CCRCC-C3L-01958_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002028,s0550,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002029,pancreas_261,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002030,s0560,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002031,s0749,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002032,s0617,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002033,PETCT_a82f03863a,autoPET,unknown,unknown,unknown
+BDMAP_00002034,PETCT_f0e1b89b41,autoPET,unknown,unknown,unknown
+BDMAP_00002035,case_00099,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002036,Case_00878_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002037,Case_00825_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002038,colon_085,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002039,colon_126,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002040,PETCT_62ced197ca,autoPET,unknown,unknown,unknown
+BDMAP_00002041,case_00427,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002042,hepaticvessel_157,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002043,PETCT_b57e1c1f5f,autoPET,unknown,unknown,unknown
+BDMAP_00002044,TCIAColon_0012_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002045,hepaticvessel_454,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002046,amos_0060,AMOS,unknown,unknown,unknown
+BDMAP_00002047,hepaticvessel_051,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002048,lung_064,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002049,PETCT_685d7c09b5,autoPET,unknown,unknown,unknown
+BDMAP_00002050,CPTAC-CCRCC-C3N-00437_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002051,PETCT_a29cae0316,autoPET,unknown,unknown,unknown
+BDMAP_00002052,Case_00970_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002053,hepaticvessel_119,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002054,s0324,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002055,liver_38,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002056,s0945,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002057,case_00455,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002058,s0635,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002059,PANCREAS_0003,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00002060,case_00217,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002061,amos_0104,AMOS,unknown,unknown,unknown
+BDMAP_00002062,TCIAColon_0037_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002063,TCIAColon_0180_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002064,s0228,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002065,case_00500,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002066,Case_00932_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002067,case_00105,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002068,case_00030,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002069,PETCT_6f46454a8d,autoPET,unknown,unknown,unknown
+BDMAP_00002070,s0940,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002071,PETCT_d6b2218bf3,autoPET,unknown,unknown,unknown
+BDMAP_00002072,hepaticvessel_364,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002073,hepaticvessel_422,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002074,TCIAColon_0124_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002075,case_00442,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002076,pancreas_376,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002077,amos_0195,AMOS,unknown,unknown,unknown
+BDMAP_00002078,TCIAColon_0011_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002079,hepaticvessel_216,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002080,volume-97,CT-ORG,unknown,unknown,unknown
+BDMAP_00002081,TCIAColon_0236_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002082,pancreas_447,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002083,Case_00545_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002084,volume-124,CT-ORG,unknown,unknown,unknown
+BDMAP_00002085,case_00564,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002086,PETCT_b258dfa7c2,autoPET,unknown,unknown,unknown
+BDMAP_00002087,case_00080,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002088,pancreas_057,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002089,spleen_53,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002090,PETCT_e664932bbc,autoPET,unknown,unknown,unknown
+BDMAP_00002091,case_00207,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002092,TCIAColon_0121_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002093,s0765,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002094,PETCT_d40a16781a,autoPET,unknown,unknown,unknown
+BDMAP_00002095,PETCT_64c0cba177,autoPET,unknown,unknown,unknown
+BDMAP_00002096,PETCT_b4247b8ecd,autoPET,unknown,unknown,unknown
+BDMAP_00002097,TCIAColon_0050_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002098,amos_0400,AMOS,unknown,unknown,unknown
+BDMAP_00002099,case_00406,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002100,s0513,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002101,PETCT_8a52353a72,autoPET,unknown,unknown,unknown
+BDMAP_00002102,PETCT_62011ff15b,autoPET,unknown,unknown,unknown
+BDMAP_00002103,colon_001,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002104,NIH-LYMPH-ABD-013_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002105,PETCT_1b1bdfc35b,autoPET,unknown,unknown,unknown
+BDMAP_00002106,PETCT_380f71df1e,autoPET,unknown,unknown,unknown
+BDMAP_00002107,PETCT_61d5bc58fc,autoPET,unknown,unknown,unknown
+BDMAP_00002108,PETCT_9da159b835,autoPET,unknown,unknown,unknown
+BDMAP_00002109,img0001,BTCV,healthy,healthy,healthy
+BDMAP_00002110,amos_0383,AMOS,unknown,unknown,unknown
+BDMAP_00002111,PETCT_d472033d3b,autoPET,unknown,unknown,unknown
+BDMAP_00002112,PETCT_d951eeb735,autoPET,unknown,unknown,unknown
+BDMAP_00002113,TCIAColon_0149_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002114,case_00040,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002115,TCGA-OV-61-1906_0_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00002116,PETCT_c898e2abcb,autoPET,unknown,unknown,unknown
+BDMAP_00002117,liver_36,LiTS,unhealthy,unknown,unknown
+BDMAP_00002118,TCIAColon_0191_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002119,colon_189,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002120,pancreas_075,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002121,hepaticvessel_455,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002122,case_00286,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002123,volume-133,CT-ORG,unknown,unknown,unknown
+BDMAP_00002124,TCIAColon_0230_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002125,TCIAColon_0016_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002126,pancreas_273,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002127,hepaticvessel_153,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002128,PETCT_5a274a0f26,autoPET,unknown,unknown,unknown
+BDMAP_00002129,FLARE23_Ts_0004_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002130,PETCT_bc80d06f97,autoPET,unknown,unknown,unknown
+BDMAP_00002131,PETCT_a86b2dc6ce,autoPET,unknown,unknown,unknown
+BDMAP_00002132,CPTAC-UCEC-C3N-00743_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00002133,case_00198,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002134,Case_01036_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002135,amos_0066,AMOS,unknown,unknown,unknown
+BDMAP_00002136,TCGA-BLCA-4Z-AA7O_0_2,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00002137,TCIAColon_0067_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002138,PETCT_527c5afc5d,autoPET,unknown,unknown,unknown
+BDMAP_00002139,hepaticvessel_263,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002140,word_0061,WORD,unknown,unknown,unknown
+BDMAP_00002141,CPTAC-UCEC-C3L-02399_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00002142,s0088,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002143,PETCT_75046e0c12,autoPET,unknown,unknown,unknown
+BDMAP_00002144,hepaticvessel_092,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002145,TCIAColon_0288_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002146,PETCT_d206b891ee,autoPET,unknown,unknown,unknown
+BDMAP_00002147,liver_114,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002148,Case_00252_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002149,lung_046,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002150,s0963,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002151,TCIAColon_0214_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002152,colon_114,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002153,hepaticvessel_198,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002154,PETCT_ea051a3e6c,autoPET,unknown,unknown,unknown
+BDMAP_00002155,word_0096,WORD,unknown,unknown,unknown
+BDMAP_00002156,TCIAColon_0102_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002157,TCIAColon_0067_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002158,liver_37,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002159,Case_00943_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002160,TCIAColon_0223_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002161,s0158,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002162,amos_0016,AMOS,unknown,unknown,unknown
+BDMAP_00002163,case_00143,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002164,case_00426,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002165,hepaticvessel_266,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002166,case_00222,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002167,liver_11,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002168,hepaticvessel_016,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002169,TCIAColon_0063_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002170,FLARE23_Ts_0074_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002171,pancreas_095,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002172,liver_37,LiTS,unhealthy,unknown,unknown
+BDMAP_00002173,case_00411,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002174,s0145,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002175,PETCT_4a255db7bd,autoPET,unknown,unknown,unknown
+BDMAP_00002176,PETCT_f7067b7bbb,autoPET,unknown,unknown,unknown
+BDMAP_00002177,s0898,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002178,PETCT_7785c10e91,autoPET,unknown,unknown,unknown
+BDMAP_00002179,PETCT_63dd9503eb,autoPET,unknown,unknown,unknown
+BDMAP_00002180,word_0003,WORD,unknown,unknown,unknown
+BDMAP_00002181,case_00100,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002182,PETCT_7978e9fe62,autoPET,unknown,unknown,unknown
+BDMAP_00002183,CPTAC-PDA-C3N-01714_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002184,case_00575,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002185,colon_203,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002186,word_0094,WORD,unknown,unknown,unknown
+BDMAP_00002187,TCIAColon_0162_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002188,pancreas_204,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002189,hepaticvessel_004,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002190,hepaticvessel_113,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002191,PETCT_6aea5c3a03,autoPET,unknown,unknown,unknown
+BDMAP_00002192,PETCT_aee7d68f86,autoPET,unknown,unknown,unknown
+BDMAP_00002193,colon_198,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002194,amos_0225,AMOS,unknown,unknown,unknown
+BDMAP_00002195,TCIAColon_0100_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00002196,s0519,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002197,word_0005,WORD,unknown,unknown,unknown
+BDMAP_00002198,volume-117,CT-ORG,unknown,unknown,unknown
+BDMAP_00002199,colon_120,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002200,PETCT_35c9c85a96,autoPET,unknown,unknown,unknown
+BDMAP_00002201,PETCT_9ad7dffae6,autoPET,unknown,unknown,unknown
+BDMAP_00002202,TCIAColon_0086_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002203,TCIAColon_0205_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002204,PETCT_d32cf972af,autoPET,unknown,unknown,unknown
+BDMAP_00002205,TCIAColon_0066_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002206,s1063,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002207,amos_0177,AMOS,unknown,unknown,unknown
+BDMAP_00002208,s0086,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002209,lung_014,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002210,PETCT_3cd49210eb,autoPET,unknown,unknown,unknown
+BDMAP_00002211,case_00195,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002212,PANCREAS_0024,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00002213,pancreas_457,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002214,liver_128,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002215,TCIAColon_0163_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002216,pancreas_120,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002217,amos_0086,AMOS,unknown,unknown,unknown
+BDMAP_00002218,PETCT_1a3d4e63ee,autoPET,unknown,unknown,unknown
+BDMAP_00002219,TCIAColon_0285_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00002220,spleen_39,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002221,PETCT_1bb48bfb40,autoPET,unknown,unknown,unknown
+BDMAP_00002222,s0119,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002223,colon_184,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002224,PETCT_9b53627d23,autoPET,unknown,unknown,unknown
+BDMAP_00002225,Case_00998_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002226,case_00041,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002227,pancreas_227,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002228,hepaticvessel_060,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002229,colon_116,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002230,colon_104,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002231,lung_066,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002232,pancreas_052,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002233,pancreas_247,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002234,amos_0224,AMOS,unknown,unknown,unknown
+BDMAP_00002235,PETCT_5ac322455f,autoPET,unknown,unknown,unknown
+BDMAP_00002236,PANCREAS_0042,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00002237,pancreas_183,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002238,hepaticvessel_176,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002239,TCIAColon_0141_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002240,TCIAColon_0162_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002241,PETCT_62b114e09b,autoPET,unknown,unknown,unknown
+BDMAP_00002242,case_00067,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002243,hepaticvessel_205,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002244,pancreas_366,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002245,s0341,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002246,PETCT_9f491f1481,autoPET,unknown,unknown,unknown
+BDMAP_00002247,CPTAC-PDA-C3N-01714_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002248,hepaticvessel_432,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002249,s1099,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002250,pancreas_421,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002251,case_00144,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002252,liver_54,LiTS,unhealthy,unknown,unknown
+BDMAP_00002253,colon_015,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002254,TCIAColon_0118_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002255,hepaticvessel_184,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002256,Case_00988_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002257,PETCT_983a76fd43,autoPET,unknown,unknown,unknown
+BDMAP_00002258,volume-110,CT-ORG,unknown,unknown,unknown
+BDMAP_00002259,pancreas_461,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002260,case_00194,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002261,PETCT_0cda25453b,autoPET,unknown,unknown,unknown
+BDMAP_00002262,PETCT_34aa521b46,autoPET,unknown,unknown,unknown
+BDMAP_00002263,Case_00524_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002264,PETCT_9e864bb710,autoPET,unknown,unknown,unknown
+BDMAP_00002265,case_00176,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002266,liver_146,MSD-Liver,unknown,unknown,unknown
+BDMAP_00002267,liver_7,LiTS,unhealthy,unknown,unknown
+BDMAP_00002268,pancreas_338,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002269,s0028,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002270,TCIAColon_0184_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002271,liver_68,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002272,PETCT_7948aa0e26,autoPET,unknown,unknown,unknown
+BDMAP_00002273,case_00283,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002274,s1291,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002275,liver_89,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002276,colon_063,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002277,TCIAColon_0198_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002278,pancreas_045,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002279,PETCT_39eca178a1,autoPET,unknown,unknown,unknown
+BDMAP_00002280,s0157,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002281,CPTAC-PDA-C3N-03430_1_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002282,liver_77,LiTS,unhealthy,unknown,unknown
+BDMAP_00002283,liver_44,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002284,NIH-LYMPH-MED-012_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002285,Case_00884_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002286,PETCT_9a2c6e618a,autoPET,unknown,unknown,unknown
+BDMAP_00002287,colon_079,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002288,case_00521,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002289,liver_122,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002290,PETCT_fb014a1ea0,autoPET,unknown,unknown,unknown
+BDMAP_00002291,TCIAColon_0285_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00002292,PETCT_b663adb148,autoPET,unknown,unknown,unknown
+BDMAP_00002293,TCIAColon_0195_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002294,TCIAColon_0229_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002295,pancreas_372,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002296,TCIAColon_0179_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002297,s0694,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002298,pancreas_100,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002299,s0836,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002300,FLARE23_Ts_0088_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002301,NIH-LYMPH-ABD-063_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002302,case_00202,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002303,s1387,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002304,pancreas_354,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002305,colon_040,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002306,CPTAC-PDA-C3N-02998_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002307,PETCT_456d14846b,autoPET,unknown,unknown,unknown
+BDMAP_00002308,s1100,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002309,pancreas_299,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002310,case_00227,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002311,pancreas_133,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002312,TCGA-OV-61-1907_2_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00002313,pancreas_131,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002314,TCIAColon_0027_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002315,NIH-LYMPH-ABD-081_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002316,s0743,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002317,hepaticvessel_098,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002318,colon_077,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002319,case_00497,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002320,pancreas_381,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002321,Case_00458_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002322,CPTAC-CCRCC-C3N-00310_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002323,s1390,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002324,PETCT_98c6af8b90,autoPET,unknown,unknown,unknown
+BDMAP_00002325,TCIAColon_0025_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002326,case_00479,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002327,TCIAColon_0062_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002328,pancreas_387,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002329,FLARE23_Ts_0017_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002330,NIH-LYMPH-MED-009_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002331,Case_00433_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002332,pancreas_130,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002333,case_00501,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002334,word_0015,WORD,unknown,unknown,unknown
+BDMAP_00002335,PETCT_41472f5ce9,autoPET,unknown,unknown,unknown
+BDMAP_00002336,liver_156,MSD-Liver,unknown,unknown,unknown
+BDMAP_00002337,s0239,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002338,Case_01022_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002339,s1238,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002340,TCGA-BLCA-DK-A1A7_0_1,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00002341,colon_082,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002342,volume-102,CT-ORG,unknown,unknown,unknown
+BDMAP_00002343,pancreas_174,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002344,PETCT_b2244b5591,autoPET,unknown,unknown,unknown
+BDMAP_00002345,CPTAC-PDA-C3N-03426_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002346,PETCT_55ca11402a,autoPET,unknown,unknown,unknown
+BDMAP_00002347,case_00256,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002348,pancreas_397,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002349,liver_28,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002350,TCIAColon_0028_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002351,PETCT_f1ca0f7c4c,autoPET,unknown,unknown,unknown
+BDMAP_00002352,lung_053,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002353,PETCT_93bea242d1,autoPET,unknown,unknown,unknown
+BDMAP_00002354,case_00491,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002355,Case_00202_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002356,colon_121,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002357,amos_0099,AMOS,unknown,unknown,unknown
+BDMAP_00002358,Case_00965_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002359,liver_8,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002360,PETCT_4848bebb10,autoPET,unknown,unknown,unknown
+BDMAP_00002361,case_00202,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002362,pancreas_265,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002363,case_00128,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002364,NIH-LYMPH-ABD-071_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002365,amos_0281,AMOS,unknown,unknown,unknown
+BDMAP_00002366,s1369,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002367,img0008,BTCV,healthy,healthy,healthy
+BDMAP_00002368,PETCT_2b60c8135a,autoPET,unknown,unknown,unknown
+BDMAP_00002369,PETCT_4760c0139a,autoPET,unknown,unknown,unknown
+BDMAP_00002370,CPTAC-UCEC-C3N-01171_0_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00002371,hepaticvessel_078,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002372,amos_0045,AMOS,unknown,unknown,unknown
+BDMAP_00002373,liver_41,LiTS,unhealthy,unknown,unknown
+BDMAP_00002374,word_0148,WORD,unknown,unknown,unknown
+BDMAP_00002375,PETCT_17d334cb6c,autoPET,unknown,unknown,unknown
+BDMAP_00002376,Case_00709_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002377,s0677,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002378,PETCT_ad7c6a4a58,autoPET,unknown,unknown,unknown
+BDMAP_00002379,PETCT_d46f0109f8,autoPET,unknown,unknown,unknown
+BDMAP_00002380,amos_0175,AMOS,unknown,unknown,unknown
+BDMAP_00002381,volume-104,CT-ORG,unknown,unknown,unknown
+BDMAP_00002382,CPTAC-PDA-C3N-01715_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002383,case_00090,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002384,Case_00285_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002385,s0124,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002386,Case_00015_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002387,pancreas_358,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002388,TCIAColon_0053_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002389,NIH-LYMPH-ABD-006_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002390,FLARE23_Ts_0002_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002391,s0307,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002392,Case_00293_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002393,PETCT_ddbb3c69f0,autoPET,unknown,unknown,unknown
+BDMAP_00002394,Case_00887_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002395,pancreas_039,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002396,case_00175,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002397,PETCT_80ccbdadf9,autoPET,unknown,unknown,unknown
+BDMAP_00002398,TCIAColon_0219_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002399,PETCT_7d8aa1e94d,autoPET,unknown,unknown,unknown
+BDMAP_00002400,hepaticvessel_366,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002401,colon_112,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002402,pancreas_228,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002403,case_00254,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002404,case_00214,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002405,CPTAC-PDA-C3N-01167_0_8,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002406,s0109,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002407,case_00576,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002408,PETCT_14929994cf,autoPET,unknown,unknown,unknown
+BDMAP_00002409,CPTAC-PDA-C3N-03670_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002410,case_00078,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002411,pancreas_339,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002412,23_image,CHAOS,healthy,healthy,healthy
+BDMAP_00002413,hepaticvessel_245,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002414,NIH-LYMPH-ABD-014_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002415,hepaticvessel_340,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002416,PETCT_4fb1817df3,autoPET,unknown,unknown,unknown
+BDMAP_00002417,case_00017,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002418,hepaticvessel_272,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002419,liver_33,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002420,hepaticvessel_448,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002421,case_00172,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002422,case_00409,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002423,TCIAColon_0004_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002424,liver_200,MSD-Liver,unknown,unknown,unknown
+BDMAP_00002425,hepaticvessel_048,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002426,case_00216,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002427,NIH-LYMPH-ABD-044_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002428,TCIAColon_0018_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002429,TCIAColon_0269_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002430,NIH-LYMPH-ABD-055_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002431,NIH-LYMPH-MED-005_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002432,LDCT-L277_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00002433,case_00209,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002434,case_00107,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002435,s0777,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002436,liver_132,MSD-Liver,unknown,unknown,unknown
+BDMAP_00002437,case_00027,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002438,Case_00212_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002439,PETCT_465176d213,autoPET,unknown,unknown,unknown
+BDMAP_00002440,case_00014,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002441,hepaticvessel_236,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002442,CPTAC-CCRCC-C3N-00435_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002443,s1007,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002444,Case_00936_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002445,s0319,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002446,case_00179,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002447,TCIAColon_0201_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002448,amos_0337,AMOS,unknown,unknown,unknown
+BDMAP_00002449,PETCT_cd50f3fec4,autoPET,unknown,unknown,unknown
+BDMAP_00002450,s0507,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002451,colon_134,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002452,PETCT_cb240e6f0f,autoPET,unknown,unknown,unknown
+BDMAP_00002453,case_00016,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002454,s1340,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002455,Case_01055_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002456,PETCT_64909533c5,autoPET,unknown,unknown,unknown
+BDMAP_00002457,pancreas_441,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002458,colon_215,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002459,PETCT_b92d7f441e,autoPET,unknown,unknown,unknown
+BDMAP_00002460,PETCT_0117d7f11f,autoPET,unknown,unknown,unknown
+BDMAP_00002461,TCIAColon_0268_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002462,hepaticvessel_128,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002463,liver_19,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002464,PETCT_7abe274c10,autoPET,unknown,unknown,unknown
+BDMAP_00002465,colon_086,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002466,hepaticvessel_212,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002467,amos_0129,AMOS,unknown,unknown,unknown
+BDMAP_00002468,PETCT_90d668ed29,autoPET,unknown,unknown,unknown
+BDMAP_00002469,Case_00183_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002470,TCGA-BLCA-DK-A3IN_0_2,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00002471,case_00225,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002472,case_00437,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002473,lung_043,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002474,case_00032,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002475,pancreas_266,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002476,case_00275,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002477,CPTAC-PDA-C3N-01382_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002478,hepaticvessel_066,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002479,liver_90,LiTS,unhealthy,unknown,unknown
+BDMAP_00002480,CPTAC-UCEC-C3N-00866_2_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00002481,case_00070,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002482,s0227,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002483,PETCT_c5a143a604,autoPET,unknown,unknown,unknown
+BDMAP_00002484,case_00261,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002485,liver_2,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002486,hepaticvessel_020,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002487,case_00191,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002488,PETCT_8b40e356dc,autoPET,unknown,unknown,unknown
+BDMAP_00002489,s0365,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002490,s1249,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002491,PETCT_591b3025ff,autoPET,unknown,unknown,unknown
+BDMAP_00002492,case_00124,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002493,hepaticvessel_095,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002494,TCIAColon_0230_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00002495,liver_105,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002496,case_00284,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002497,hepaticvessel_164,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002498,case_00281,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002499,TCIAColon_0022_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002500,TCGA-OV-61-1738_1_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00002501,case_00038,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002502,PETCT_2d9638360e,autoPET,unknown,unknown,unknown
+BDMAP_00002503,pancreas_383,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002504,case_00056,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002505,CPTAC-CCRCC-C3N-00491_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002506,s0992,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002507,PETCT_4cb875dc0b,autoPET,unknown,unknown,unknown
+BDMAP_00002508,Case_00427_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002509,case_00190,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002510,TCIAColon_0102_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00002511,case_00238,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002512,PETCT_8311aeddb9,autoPET,unknown,unknown,unknown
+BDMAP_00002513,PETCT_bb564e29d2,autoPET,unknown,unknown,unknown
+BDMAP_00002514,pancreas_462,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002515,lung_044,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002516,TCIAColon_0019_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002517,s1209,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002518,case_00041,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002519,hepaticvessel_292,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002520,TCIAColon_0047_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002521,s0224,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002522,FLARE23_Ts_0089_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002523,pancreas_399,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002524,case_00245,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002525,PETCT_2dc17aaeaf,autoPET,unknown,unknown,unknown
+BDMAP_00002526,TCIAColon_0181_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002527,hepaticvessel_079,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002528,hepaticvessel_076,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002529,liver_125,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002530,colon_180,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002531,CPTAC-CCRCC-C3L-01459_1_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002532,s0746,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002533,Case_00835_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002534,spleen_59,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002535,s1208,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002536,amos_0185,AMOS,unknown,unknown,unknown
+BDMAP_00002537,CPTAC-CCRCC-C3L-01954_3_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002538,PETCT_448225c237,autoPET,unknown,unknown,unknown
+BDMAP_00002539,s1008,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002540,volume-85,CT-ORG,unknown,unknown,unknown
+BDMAP_00002541,colon_083,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002542,Case_00728_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002543,LDCT-L237_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00002544,amos_0299,AMOS,unknown,unknown,unknown
+BDMAP_00002545,case_00119,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002546,TCGA-BLCA-4Z-AA81_0_3,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00002547,lung_055,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002548,s0651,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002549,hepaticvessel_017,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002550,PETCT_321bba14bc,autoPET,unknown,unknown,unknown
+BDMAP_00002551,TCIAColon_0299_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00002552,case_00093,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002553,PETCT_a627fc68a1,autoPET,unknown,unknown,unknown
+BDMAP_00002554,amos_0408,AMOS,unknown,unknown,unknown
+BDMAP_00002555,word_0109,WORD,unknown,unknown,unknown
+BDMAP_00002556,TCIAColon_0078_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002557,s0616,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002558,Case_00254_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002559,Case_00992_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002560,Case_00678_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002561,amos_0341,AMOS,unknown,unknown,unknown
+BDMAP_00002562,case_00185,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002563,Case_00917_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002564,Case_00975_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002565,s1354,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002566,liver_142,MSD-Liver,unknown,unknown,unknown
+BDMAP_00002567,PETCT_b6fc20942c,autoPET,unknown,unknown,unknown
+BDMAP_00002568,TCIAColon_0211_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002569,PANCREAS_0014,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00002570,case_00256,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002571,case_00297,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002572,spleen_55,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002573,FLARE23_Ts_0058_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002574,case_00013,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002575,Case_00857_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002576,s0733,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002577,TCIAColon_0034_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002578,s1031,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002579,hepaticvessel_089,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002580,pancreas_298,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002581,Case_00863_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002582,case_00420,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002583,liver_99,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002584,PETCT_0cda25453b,autoPET,unknown,unknown,unknown
+BDMAP_00002585,pancreas_496,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002586,s1276,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002587,FLARE23_Ts_0011_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002588,PETCT_0e2034240b,autoPET,unknown,unknown,unknown
+BDMAP_00002589,NIH-LYMPH-MED-014_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002590,hepaticvessel_201,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002591,TCIAColon_0071_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002592,case_00459,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002593,PETCT_68ef307665,autoPET,unknown,unknown,unknown
+BDMAP_00002594,pancreas_220,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002595,PETCT_7147385005,autoPET,unknown,unknown,unknown
+BDMAP_00002596,CPTAC-CCRCC-C3L-02202_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002597,s0211,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002598,colon_138,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002599,hepaticvessel_159,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002600,word_0056,WORD,unknown,unknown,unknown
+BDMAP_00002601,Case_00961_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002602,TCIAColon_0129_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002603,pancreas_078,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002604,spleen_63,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002605,PETCT_61348439bf,autoPET,unknown,unknown,unknown
+BDMAP_00002606,Case_00769_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002607,TCIAColon_0278_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002608,PETCT_a9d7a14ba1,autoPET,unknown,unknown,unknown
+BDMAP_00002609,case_00546,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002610,PETCT_06d55e8295,autoPET,unknown,unknown,unknown
+BDMAP_00002611,PETCT_32aa845af1,autoPET,unknown,unknown,unknown
+BDMAP_00002612,colon_196,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002613,Case_00768_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002614,PETCT_ede28cc3c2,autoPET,unknown,unknown,unknown
+BDMAP_00002615,TCIAColon_0272_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002616,pancreas_369,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002617,CPTAC-PDA-C3N-02697_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002618,PETCT_8e02f36295,autoPET,unknown,unknown,unknown
+BDMAP_00002619,pancreas_404,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002620,PETCT_e37d5b9bc2,autoPET,unknown,unknown,unknown
+BDMAP_00002621,LDCT-L248_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00002622,PETCT_997d4ef9a7,autoPET,unknown,unknown,unknown
+BDMAP_00002623,PETCT_f8de0cde56,autoPET,unknown,unknown,unknown
+BDMAP_00002624,hepaticvessel_230,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002625,pancreas_307,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002626,case_00092,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002627,PETCT_741f6130ed,autoPET,unknown,unknown,unknown
+BDMAP_00002628,s0790,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002629,FLARE23_Ts_0091_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002630,PETCT_b7c1533a39,autoPET,unknown,unknown,unknown
+BDMAP_00002631,case_00005,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002632,PETCT_4404466919,autoPET,unknown,unknown,unknown
+BDMAP_00002633,Case_00979_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002634,TCIAColon_0185_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00002635,PETCT_dd8f9f217c,autoPET,unknown,unknown,unknown
+BDMAP_00002636,volume-70,CT-ORG,unknown,unknown,unknown
+BDMAP_00002637,Case_00805_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002638,case_00139,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002639,img0033,BTCV,healthy,healthy,healthy
+BDMAP_00002640,PETCT_9a2bfe901f,autoPET,unknown,unknown,unknown
+BDMAP_00002641,lung_058,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002642,CPTAC-PDA-C3N-03430_0_10,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002643,LDCT-L273_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00002644,TCIAColon_0109_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002645,TCIAColon_0224_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002646,PETCT_9f6e8b1b43,autoPET,unknown,unknown,unknown
+BDMAP_00002647,pancreas_451,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002648,case_00104,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002649,Case_00830_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002650,PANCREAS_0047,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00002651,hepaticvessel_018,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002652,TCIAColon_0074_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002653,case_00515,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002654,colon_096,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002655,case_00106,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002656,case_00445,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002657,pancreas_340,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002658,s0082,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002659,PETCT_69c90b6820,autoPET,unknown,unknown,unknown
+BDMAP_00002660,amos_0402,AMOS,unknown,unknown,unknown
+BDMAP_00002661,case_00467,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002662,PETCT_27d69a8466,autoPET,unknown,unknown,unknown
+BDMAP_00002663,case_00241,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002664,s0030,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002665,case_00092,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002666,TCIAColon_0223_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002667,hepaticvessel_104,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002668,word_0007,WORD,unknown,unknown,unknown
+BDMAP_00002669,FLARE23_Ts_0085_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002670,PETCT_b621742469,autoPET,unknown,unknown,unknown
+BDMAP_00002671,s0880,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002672,LDCT-L203_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00002673,case_00025,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002674,PETCT_fa45f610c4,autoPET,unknown,unknown,unknown
+BDMAP_00002675,Case_00009_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002676,TCIAColon_0107_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002677,PETCT_c227131152,autoPET,unknown,unknown,unknown
+BDMAP_00002678,TCIAColon_0265_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002679,PETCT_4f6ff86453,autoPET,unknown,unknown,unknown
+BDMAP_00002680,LDCT-L212_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00002681,s1297,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002682,word_0040,WORD,unknown,unknown,unknown
+BDMAP_00002683,CPTAC-UCEC-C3N-00866_1_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00002684,s1164,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002685,PETCT_fe705ea1cc,autoPET,unknown,unknown,unknown
+BDMAP_00002686,pancreas_464,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002687,PETCT_ad7cd4a9d2,autoPET,unknown,unknown,unknown
+BDMAP_00002688,pancreas_244,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002689,case_00131,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002690,pancreas_064,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002691,hepaticvessel_142,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002692,PETCT_3bce0eb7aa,autoPET,unknown,unknown,unknown
+BDMAP_00002693,PETCT_53a0610615,autoPET,unknown,unknown,unknown
+BDMAP_00002694,Case_00017_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002695,case_00165,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002696,case_00166,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002697,PETCT_f6295a93a6,autoPET,unknown,unknown,unknown
+BDMAP_00002698,hepaticvessel_188,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002699,liver_52,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002700,PETCT_d31a5688a2,autoPET,unknown,unknown,unknown
+BDMAP_00002701,s0050,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002702,s0690,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002703,s0763,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002704,colon_066,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002705,hepaticvessel_255,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002706,hepaticvessel_125,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002707,case_00295,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002708,case_00049,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002709,CPTAC-PDA-C3N-01167_0_9,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002710,case_00013,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002711,PETCT_d103e57f0e,autoPET,unknown,unknown,unknown
+BDMAP_00002712,liver_119,LiTS,healthy,unknown,unknown
+BDMAP_00002713,FLARE23_Ts_0092_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002714,TCIAColon_0213_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002715,PETCT_e0a7ccecad,autoPET,unknown,unknown,unknown
+BDMAP_00002716,FLARE23_Ts_0061_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002717,liver_98,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002718,CPTAC-PDA-C3N-02697_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002719,liver_123,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002720,case_00002,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002721,TCIAColon_0038_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002722,TCIAColon_0172_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00002723,TCGA-BLCA-4Z-AA7W_0_5,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00002724,CPTAC-CCRCC-C3L-00815_0_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002725,hepaticvessel_221,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002726,s0669,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002727,colon_060,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002728,case_00208,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002729,TCIAColon_0204_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002730,colon_181,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002731,hepaticvessel_420,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002732,colon_170,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002733,word_0147,WORD,unknown,unknown,unknown
+BDMAP_00002734,amos_0186,AMOS,unknown,unknown,unknown
+BDMAP_00002735,s0536,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002736,s0950,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002737,pancreas_345,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002738,s0923,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002739,colon_193,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002740,amos_0102,AMOS,unknown,unknown,unknown
+BDMAP_00002741,hepaticvessel_279,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002742,case_00079,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002743,lung_093,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002744,case_00009,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002745,TCIAColon_0170_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002746,case_00464,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002747,colon_182,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002748,liver_65,LiTS,unhealthy,unknown,unknown
+BDMAP_00002749,hepaticvessel_417,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002750,LDCT-L229_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00002751,case_00051,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002752,PETCT_65346b03b8,autoPET,unknown,unknown,unknown
+BDMAP_00002753,PANCREAS_0046,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00002754,Case_00192_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002755,Case_00761_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002756,PETCT_1956667fce,autoPET,unknown,unknown,unknown
+BDMAP_00002757,s1289,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002758,pancreas_018,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002759,s0591,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002760,case_00236,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002761,PETCT_dac5cd2a4d,autoPET,unknown,unknown,unknown
+BDMAP_00002762,Case_00217_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002763,PANCREAS_0038,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00002764,spleen_58,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002765,s0447,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002766,s0467,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002767,hepaticvessel_137,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002768,PETCT_adc49adb3d,autoPET,unknown,unknown,unknown
+BDMAP_00002769,PETCT_eeeda112bb,autoPET,unknown,unknown,unknown
+BDMAP_00002770,PETCT_15f4b7254f,autoPET,unknown,unknown,unknown
+BDMAP_00002771,colon_146,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002772,TCIAColon_0246_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002773,PETCT_f7a9267a69,autoPET,unknown,unknown,unknown
+BDMAP_00002774,pancreas_475,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002775,case_00068,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002776,case_00036,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002777,s0915,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002778,PETCT_e6b8b963b2,autoPET,unknown,unknown,unknown
+BDMAP_00002779,2_image,CHAOS,healthy,healthy,healthy
+BDMAP_00002780,PETCT_7cfd708a53,autoPET,unknown,unknown,unknown
+BDMAP_00002781,PETCT_ef9d41b836,autoPET,unknown,unknown,unknown
+BDMAP_00002782,s0077,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002783,CPTAC-PDA-C3N-03430_1_10,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002784,TCIAColon_0115_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002785,PETCT_04ab5c61c9,autoPET,unknown,unknown,unknown
+BDMAP_00002786,hepaticvessel_115,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002787,PETCT_372746cc99,autoPET,unknown,unknown,unknown
+BDMAP_00002788,case_00006,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002789,PETCT_987c8a1160,autoPET,unknown,unknown,unknown
+BDMAP_00002790,s1140,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002791,liver_23,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002792,TCIAColon_0099_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00002793,pancreas_267,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002794,s1046,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002795,PETCT_62b114e09b,autoPET,unknown,unknown,unknown
+BDMAP_00002796,TCIAColon_0110_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002797,volume-122,CT-ORG,unknown,unknown,unknown
+BDMAP_00002798,case_00089,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002799,PETCT_2791a0b3c2,autoPET,unknown,unknown,unknown
+BDMAP_00002800,word_0063,WORD,unknown,unknown,unknown
+BDMAP_00002801,PETCT_9837205b34,autoPET,unknown,unknown,unknown
+BDMAP_00002802,liver_170,MSD-Liver,unknown,unknown,unknown
+BDMAP_00002803,case_00140,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002804,case_00108,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002805,liver_80,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002806,hepaticvessel_187,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002807,case_00405,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002808,CPTAC-CCRCC-C3N-00437_0_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002809,s1159,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002810,pancreas_073,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002811,PETCT_390129c0d2,autoPET,unknown,unknown,unknown
+BDMAP_00002812,PETCT_d674a028b1,autoPET,unknown,unknown,unknown
+BDMAP_00002813,PETCT_37472e737f,autoPET,unknown,unknown,unknown
+BDMAP_00002814,PETCT_4cc808d16f,autoPET,unknown,unknown,unknown
+BDMAP_00002815,pancreas_201,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002816,hepaticvessel_065,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002817,TCIAColon_0053_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002818,PETCT_f9e0c504af,autoPET,unknown,unknown,unknown
+BDMAP_00002819,TCIAColon_0270_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002820,word_0112,WORD,unknown,unknown,unknown
+BDMAP_00002821,pancreas_003,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002822,pancreas_423,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002823,PETCT_8c5d99b459,autoPET,unknown,unknown,unknown
+BDMAP_00002824,s0593,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002825,amos_0052,AMOS,unknown,unknown,unknown
+BDMAP_00002826,case_00153,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002827,TCIAColon_0268_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002828,colon_011,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002829,pancreas_286,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002830,PETCT_96e7a3ab28,autoPET,unknown,unknown,unknown
+BDMAP_00002831,hepaticvessel_375,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002832,PETCT_3f2ee0274d,autoPET,unknown,unknown,unknown
+BDMAP_00002833,case_00052,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002834,case_00091,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002835,PETCT_f650c87621,autoPET,unknown,unknown,unknown
+BDMAP_00002836,PETCT_223f70f0b0,autoPET,unknown,unknown,unknown
+BDMAP_00002837,word_0142,WORD,unknown,unknown,unknown
+BDMAP_00002838,s1391,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002839,TCIAColon_0141_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002840,case_00065,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002841,liver_17,LiTS,unhealthy,unknown,unknown
+BDMAP_00002842,TCIAColon_0272_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002843,PETCT_37952b7ffb,autoPET,unknown,unknown,unknown
+BDMAP_00002844,pancreas_110,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002845,colon_137,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002846,colon_030,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002847,PETCT_7faf36a152,autoPET,unknown,unknown,unknown
+BDMAP_00002848,TCIAColon_0299_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002849,liver_101,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002850,lung_038,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002851,volume-128,CT-ORG,unknown,unknown,unknown
+BDMAP_00002852,s1233,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002853,s0107,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002854,case_00043,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002855,pancreas_259,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002856,liver_67,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002857,FLARE23_Ts_0095_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00002858,PETCT_84e7715ed9,autoPET,unknown,unknown,unknown
+BDMAP_00002859,amos_0378,AMOS,unknown,unknown,unknown
+BDMAP_00002860,TCIAColon_0070_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002861,s0371,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002862,NIH-LYMPH-ABD-043_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002863,pancreas_330,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002864,case_00100,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002865,TCIAColon_0029_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002866,Case_00862_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002867,PETCT_3b26172779,autoPET,unknown,unknown,unknown
+BDMAP_00002868,hepaticvessel_109,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00002869,word_0045,WORD,unknown,unknown,unknown
+BDMAP_00002870,case_00008,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002871,case_00285,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002872,PETCT_bef465b4ad,autoPET,unknown,unknown,unknown
+BDMAP_00002873,case_00110,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002874,NIH-LYMPH-ABD-011_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002875,colon_201,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002876,s0615,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002877,PETCT_ff1451316e,autoPET,unknown,unknown,unknown
+BDMAP_00002878,PETCT_c799ccc2f6,autoPET,unknown,unknown,unknown
+BDMAP_00002879,PETCT_8b73608326,autoPET,unknown,unknown,unknown
+BDMAP_00002880,s1061,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002881,PETCT_b6a1ee33ef,autoPET,unknown,unknown,unknown
+BDMAP_00002882,PETCT_3049d4f1a4,autoPET,unknown,unknown,unknown
+BDMAP_00002883,TCGA-OV-61-1998_1_2,TCGA-OV,unknown,unknown,unknown
+BDMAP_00002884,case_00033,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002885,pancreas_195,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002886,CPTAC-PDA-C3N-02998_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002887,PETCT_08212d7f6c,autoPET,unknown,unknown,unknown
+BDMAP_00002888,Case_00193_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002889,case_00186,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002890,16_image,CHAOS,healthy,healthy,healthy
+BDMAP_00002891,s0804,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002892,spleen_45,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002893,case_00141,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002894,TCIAColon_0234_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002895,PETCT_193dea6ac7,autoPET,unknown,unknown,unknown
+BDMAP_00002896,pancreas_231,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002897,lung_096,MSD-Lung,unknown,unknown,unknown
+BDMAP_00002898,Case_00797_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002899,pancreas_137,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002900,PETCT_1a8bd52f71,autoPET,unknown,unknown,unknown
+BDMAP_00002901,PETCT_bd7c02faa9,autoPET,unknown,unknown,unknown
+BDMAP_00002902,case_00470,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002903,PETCT_12025abab5,autoPET,unknown,unknown,unknown
+BDMAP_00002904,TCIAColon_0008_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002905,Case_00978_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002906,case_00223,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002907,volume-139,CT-ORG,unknown,unknown,unknown
+BDMAP_00002908,TCIAColon_0262_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002909,liver_93,LiTS,unhealthy,unknown,unknown
+BDMAP_00002910,s1022,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002911,s1024,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002912,s0842,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002913,PETCT_9902caa7ec,autoPET,unknown,unknown,unknown
+BDMAP_00002914,TCGA-BLCA-DK-A1A5_0_2,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00002915,TCIAColon_0173_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00002916,TCIAColon_0086_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002917,pancreas_440,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00002918,liver_35,LiTS,unhealthy,unknown,unknown
+BDMAP_00002919,TCIAColon_0217_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002920,case_00181,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002921,CPTAC-UCEC-C3L-01246_0_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00002922,hepaticvessel_008,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002923,TCIAColon_0075_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002924,colon_050,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002925,PETCT_d6a48a629d,autoPET,unknown,unknown,unknown
+BDMAP_00002926,s0133,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002927,s0662,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002928,case_00213,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002929,hepaticvessel_082,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002930,case_00237,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002931,case_00031,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002932,img0075,BTCV,healthy,healthy,healthy
+BDMAP_00002933,case_00204,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002934,PETCT_c38b168f1a,autoPET,unknown,unknown,unknown
+BDMAP_00002935,TCIAColon_0205_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002936,case_00476,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002937,amos_0349,AMOS,unknown,unknown,unknown
+BDMAP_00002938,NIH-LYMPH-ABD-007_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00002939,hepaticvessel_219,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002940,case_00049,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002941,hepaticvessel_053,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002942,case_00494,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002943,CPTAC-UCEC-C3L-02399_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00002944,pancreas_070,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002945,pancreas_225,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002946,amos_0048,AMOS,unknown,unknown,unknown
+BDMAP_00002947,pancreas_391,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00002948,case_00260,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002949,PETCT_6b20c7eabb,autoPET,unknown,unknown,unknown
+BDMAP_00002950,TCGA-OV-OY-A56P_2_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00002951,PETCT_06e7c24059,autoPET,unknown,unknown,unknown
+BDMAP_00002952,hepaticvessel_103,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002953,case_00573,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002954,TCIAColon_0007_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002955,liver_61,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00002956,PETCT_40a125468a,autoPET,unknown,unknown,unknown
+BDMAP_00002957,PETCT_ae4dcc5dd3,autoPET,unknown,unknown,unknown
+BDMAP_00002958,s0778,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002959,case_00124,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002960,hepaticvessel_013,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002961,TCIAColon_0031_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002962,hepaticvessel_291,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00002963,TCIAColon_0278_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002964,s0076,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002965,s0626,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002966,CPTAC-CCRCC-C3L-01465_1_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002967,Case_00055_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00002968,spleen_16,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00002969,s0166,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002970,hepaticvessel_067,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002971,PETCT_1b199d094d,autoPET,unknown,unknown,unknown
+BDMAP_00002972,TCIAColon_0169_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00002973,TCIAColon_0216_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002974,s0732,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002975,TCIAColon_0135_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002976,amos_0162,AMOS,unknown,unknown,unknown
+BDMAP_00002977,CPTAC-CCRCC-C3N-00492_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00002978,s0240,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002979,CPTAC-PDA-C3N-01382_0_7,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002980,TCIAColon_0261_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00002981,case_00580,KiTS23,unknown,unknown,unhealthy
+BDMAP_00002982,TCIAColon_0186_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002983,s0592,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002984,hepaticvessel_314,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002985,s0495,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002986,colon_217,MSD-Colon,unknown,unknown,unknown
+BDMAP_00002987,word_0001,WORD,unknown,unknown,unknown
+BDMAP_00002988,s0556,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002989,hepaticvessel_402,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00002990,case_00276,KiTS21,unknown,unknown,unhealthy
+BDMAP_00002991,case_00271,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002992,case_00298,KiTS19,unknown,unknown,unhealthy
+BDMAP_00002993,PETCT_09ee00bdc6,autoPET,unknown,unknown,unknown
+BDMAP_00002994,s0473,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00002995,TCIAColon_0101_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00002996,TCIAColon_0052_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002997,CPTAC-PDA-C3N-01383_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00002998,TCIAColon_0065_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00002999,NIH-LYMPH-ABD-008_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003000,hepaticvessel_129,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003001,TCIAColon_0171_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003002,liver_114,LiTS,healthy,unknown,unknown
+BDMAP_00003003,volume-55,CT-ORG,unknown,unknown,unknown
+BDMAP_00003004,hepaticvessel_208,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003005,PETCT_2dac5ef654,autoPET,unknown,unknown,unknown
+BDMAP_00003006,amos_0098,AMOS,unknown,unknown,unknown
+BDMAP_00003007,PETCT_8de6953d23,autoPET,unknown,unknown,unknown
+BDMAP_00003008,spleen_6,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003009,TCIAColon_0013_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003010,s0458,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003011,Case_01023_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003012,s0189,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003013,PANCREAS_0012,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003014,PETCT_d5e2aa7feb,autoPET,unknown,unknown,unknown
+BDMAP_00003015,hepaticvessel_034,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003016,FLARE23_Ts_0067_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003017,pancreas_280,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003018,PETCT_d1c8141930,autoPET,unknown,unknown,unknown
+BDMAP_00003019,case_00123,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003020,TCIAColon_0042_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00003021,hepaticvessel_411,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003022,PETCT_bb45bfcffd,autoPET,unknown,unknown,unknown
+BDMAP_00003023,CPTAC-UCEC-C3N-00520_0_6,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003024,FLARE23_Ts_0057_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003025,PETCT_544676de40,autoPET,unknown,unknown,unknown
+BDMAP_00003026,TCIAColon_0097_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003027,word_0068,WORD,unknown,unknown,unknown
+BDMAP_00003028,hepaticvessel_003,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003029,Case_00893_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003030,TCIAColon_0046_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003031,colon_009,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003032,FLARE23_Ts_0035_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003033,PANCREAS_0030,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003034,case_00128,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003035,CPTAC-UCEC-C3N-00866_2_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003036,pancreas_416,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003037,word_0114,WORD,unknown,unknown,unknown
+BDMAP_00003038,PETCT_41bd54f97a,autoPET,unknown,unknown,unknown
+BDMAP_00003039,Case_00693_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003040,PETCT_c58477f3b4,autoPET,unknown,unknown,unknown
+BDMAP_00003041,amos_0024,AMOS,unknown,unknown,unknown
+BDMAP_00003042,PETCT_0143bab87a,autoPET,unknown,unknown,unknown
+BDMAP_00003043,hepaticvessel_233,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003044,Case_00962_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003045,amos_0113,AMOS,unknown,unknown,unknown
+BDMAP_00003046,PETCT_1291700093,autoPET,unknown,unknown,unknown
+BDMAP_00003047,TCIAColon_0255_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003048,TCIAColon_0078_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003049,Case_00679_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003050,PETCT_cf3725edf0,autoPET,unknown,unknown,unknown
+BDMAP_00003051,PETCT_f1501b1f45,autoPET,unknown,unknown,unknown
+BDMAP_00003052,liver_107,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003053,s1143,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003054,volume-64,CT-ORG,unknown,unknown,unknown
+BDMAP_00003055,PETCT_562294be56,autoPET,unknown,unknown,unknown
+BDMAP_00003056,PETCT_a7b323b3fd,autoPET,unknown,unknown,unknown
+BDMAP_00003057,TCIAColon_0031_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003058,case_00084,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003059,FLARE23_Ts_0073_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003060,Case_00920_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003061,PETCT_eda00de6b0,autoPET,unknown,unknown,unknown
+BDMAP_00003062,CPTAC-CCRCC-C3N-00244_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003063,case_00293,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003064,hepaticvessel_371,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003065,TCIAColon_0033_1_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003066,s0789,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003067,CPTAC-UCEC-C3N-00743_0_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003068,s1322,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003069,s1152,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003070,case_00274,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003071,word_0022,WORD,unknown,unknown,unknown
+BDMAP_00003072,amos_0126,AMOS,unknown,unknown,unknown
+BDMAP_00003073,case_00126,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003074,liver_127,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003075,TCIAColon_0212_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003076,s0603,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003077,TCIAColon_0026_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003078,hepaticvessel_124,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003079,PETCT_cb83710e3d,autoPET,unknown,unknown,unknown
+BDMAP_00003080,TCIAColon_0197_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003081,TCIAColon_0080_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003082,PETCT_d31c9ebd93,autoPET,unknown,unknown,unknown
+BDMAP_00003083,case_00015,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003084,TCIAColon_0165_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003085,PANCREAS_0004,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003086,hepaticvessel_035,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003087,CPTAC-CCRCC-C3L-02841_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003088,Case_00226_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003089,Case_00843_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003090,word_0084,WORD,unknown,unknown,unknown
+BDMAP_00003091,LDCT-L209_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00003092,NIH-LYMPH-ABD-001_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003093,s1394,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003094,lung_069,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003095,lung_062,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003096,PETCT_74bbceaeeb,autoPET,unknown,unknown,unknown
+BDMAP_00003097,hepaticvessel_250,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003098,colon_020,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003099,FLARE23_Ts_0096_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003100,TCIAColon_0126_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003101,PETCT_4dcf62f869,autoPET,unknown,unknown,unknown
+BDMAP_00003102,s0178,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003103,PETCT_6b177a3c28,autoPET,unknown,unknown,unknown
+BDMAP_00003104,s1006,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003105,PETCT_661ddc60e0,autoPET,unknown,unknown,unknown
+BDMAP_00003106,TCIAColon_0253_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003107,s0468,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003108,PETCT_e77124b7f4,autoPET,unknown,unknown,unknown
+BDMAP_00003109,colon_036,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003110,TCIAColon_0174_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003111,colon_117,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003112,amos_0035,AMOS,unknown,unknown,unknown
+BDMAP_00003113,colon_155,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003114,pancreas_006,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003115,volume-131,CT-ORG,unknown,unknown,unknown
+BDMAP_00003116,hepaticvessel_160,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003117,PETCT_05808cf24e,autoPET,unknown,unknown,unknown
+BDMAP_00003118,img0066,BTCV,healthy,healthy,healthy
+BDMAP_00003119,TCIAColon_0035_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003120,hepaticvessel_282,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003121,CPTAC-UCEC-C3N-00866_3_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003122,PETCT_d51bacdaba,autoPET,unknown,unknown,unknown
+BDMAP_00003123,PETCT_0225325b91,autoPET,unknown,unknown,unknown
+BDMAP_00003124,PETCT_8de70b5cd7,autoPET,unknown,unknown,unknown
+BDMAP_00003125,LDCT-L221_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00003126,TCIAColon_0157_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003127,amos_0190,AMOS,unknown,unknown,unknown
+BDMAP_00003128,case_00582,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003129,case_00165,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003130,pancreas_113,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003131,hepaticvessel_075,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003132,CPTAC-PDA-C3N-03039_2_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003133,pancreas_042,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003134,TCIAColon_0218_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003135,hepaticvessel_057,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003136,TCIAColon_0101_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003137,lung_084,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003138,pancreas_342,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003139,amos_0007,AMOS,unknown,unknown,unknown
+BDMAP_00003140,liver_63,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003141,pancreas_080,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003142,TCIAColon_0185_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003143,case_00016,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003144,NIH-LYMPH-ABD-079_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003145,TCIAColon_0073_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003146,spleen_12,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003147,amos_0384,AMOS,unknown,unknown,unknown
+BDMAP_00003148,volume-62,CT-ORG,unknown,unknown,unknown
+BDMAP_00003149,Case_00026_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003150,case_00113,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003151,liver_52,LiTS,unhealthy,unknown,unknown
+BDMAP_00003152,Case_00036_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003153,case_00556,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003154,PANCREAS_0005,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003155,word_0079,WORD,unknown,unknown,unknown
+BDMAP_00003156,s0210,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003157,PETCT_901573a747,autoPET,unknown,unknown,unknown
+BDMAP_00003158,spleen_2,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003159,s1224,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003160,s0029,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003161,s0509,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003162,hepaticvessel_011,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003163,hepaticvessel_163,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003164,case_00050,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003165,TCIAColon_0147_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003166,Case_00692_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003167,PETCT_17b46d7275,autoPET,unknown,unknown,unknown
+BDMAP_00003168,pancreas_041,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003169,PETCT_5e339b2ecf,autoPET,unknown,unknown,unknown
+BDMAP_00003170,liver_88,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003171,s0541,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003172,colon_171,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003173,TCIAColon_0200_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003174,img0076,BTCV,healthy,healthy,healthy
+BDMAP_00003175,hepaticvessel_093,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003176,PETCT_72d2d6de52,autoPET,unknown,unknown,unknown
+BDMAP_00003177,hepaticvessel_138,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003178,case_00536,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003179,s0262,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003180,TCIAColon_0146_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003181,word_0009,WORD,unknown,unknown,unknown
+BDMAP_00003182,amos_0005,AMOS,unknown,unknown,unknown
+BDMAP_00003183,case_00231,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003184,PETCT_3b14690fce,autoPET,unknown,unknown,unknown
+BDMAP_00003185,hepaticvessel_046,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003186,hepaticvessel_150,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003187,TCIAColon_0005_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00003188,TCIAColon_0023_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003189,case_00079,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003190,Case_00747_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003191,pancreas_232,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003192,Case_00556_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003193,case_00028,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003194,case_00151,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003195,case_00196,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003196,CPTAC-PDA-C3N-03430_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003197,PETCT_249dd35d0c,autoPET,unknown,unknown,unknown
+BDMAP_00003198,PETCT_7ee7610b9e,autoPET,unknown,unknown,unknown
+BDMAP_00003199,PETCT_7cfaf65584,autoPET,unknown,unknown,unknown
+BDMAP_00003200,case_00155,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003201,word_0105,WORD,unknown,unknown,unknown
+BDMAP_00003202,case_00537,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003203,hepaticvessel_049,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003204,hepaticvessel_210,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003205,case_00061,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003206,PETCT_a4ff5d0d9d,autoPET,unknown,unknown,unknown
+BDMAP_00003207,Case_00414_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003208,TCIAColon_0282_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003209,TCIAColon_0131_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003210,s0600,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003211,s0004,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003212,hepaticvessel_077,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003213,lung_018,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003214,TCIAColon_0175_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003215,pancreas_124,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003216,s1326,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003217,amos_0380,AMOS,unknown,unknown,unknown
+BDMAP_00003218,s0232,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003219,Case_00209_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003220,Case_00681_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003221,PETCT_c395306306,autoPET,unknown,unknown,unknown
+BDMAP_00003222,img0029,BTCV,healthy,healthy,healthy
+BDMAP_00003223,lung_037,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003224,lung_079,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003225,case_00137,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003226,PETCT_642d6c78d6,autoPET,unknown,unknown,unknown
+BDMAP_00003227,amos_0367,AMOS,unknown,unknown,unknown
+BDMAP_00003228,PETCT_3b1c9155f5,autoPET,unknown,unknown,unknown
+BDMAP_00003229,TCIAColon_0135_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003230,TCIAColon_0245_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003231,s1062,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003232,TCIAColon_0004_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003233,word_0042,WORD,unknown,unknown,unknown
+BDMAP_00003234,TCIAColon_0137_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003235,TCIAColon_0103_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003236,liver_85,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003237,TCIAColon_0235_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003238,hepaticvessel_403,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003239,Case_00706_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003240,case_00121,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003241,Case_00892_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003242,amos_0301,AMOS,unknown,unknown,unknown
+BDMAP_00003243,s0682,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003244,pancreas_019,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003245,case_00192,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003246,amos_0254,AMOS,unknown,unknown,unknown
+BDMAP_00003247,TCIAColon_0104_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003248,CPTAC-CCRCC-C3L-01954_3_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003249,PETCT_38106fde84,autoPET,unknown,unknown,unknown
+BDMAP_00003250,case_00277,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003251,TCIAColon_0093_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00003252,case_00577,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003253,TCIAColon_0284_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003254,pancreas_362,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003255,case_00231,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003256,case_00130,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003257,hepaticvessel_106,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003258,hepaticvessel_342,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003259,TCIAColon_0214_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003260,CPTAC-PDA-C3N-01381_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003261,hepaticvessel_074,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003262,Case_00995_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003263,PETCT_760c77b289,autoPET,unknown,unknown,unknown
+BDMAP_00003264,amos_0042,AMOS,unknown,unknown,unknown
+BDMAP_00003265,PANCREAS_0045,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003266,hepaticvessel_275,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003267,case_00160,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003268,colon_028,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003269,PETCT_9521502dbb,autoPET,unknown,unknown,unknown
+BDMAP_00003270,s0983,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003271,Case_00719_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003272,liver_31,LiTS,unhealthy,unknown,unknown
+BDMAP_00003273,amos_0396,AMOS,unknown,unknown,unknown
+BDMAP_00003274,TCIAColon_0081_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003275,TCIAColon_0208_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00003276,TCIAColon_0291_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003277,pancreas_055,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003278,spleen_22,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003279,TCIAColon_0295_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00003280,amos_0388,AMOS,unknown,unknown,unknown
+BDMAP_00003281,case_00540,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003282,lung_070,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003283,pancreas_216,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003284,TCIAColon_0199_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003285,amos_0274,AMOS,unknown,unknown,unknown
+BDMAP_00003286,hepaticvessel_064,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003287,liver_100,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003288,PETCT_9ffd8409b3,autoPET,unknown,unknown,unknown
+BDMAP_00003289,hepaticvessel_453,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003290,s1269,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003291,amos_0121,AMOS,unknown,unknown,unknown
+BDMAP_00003292,TCIAColon_0094_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003293,amos_0057,AMOS,unknown,unknown,unknown
+BDMAP_00003294,case_00449,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003295,hepaticvessel_038,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003296,CPTAC-CCRCC-C3N-00313_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003297,amos_0110,AMOS,unknown,unknown,unknown
+BDMAP_00003298,PETCT_5e2da717db,autoPET,unknown,unknown,unknown
+BDMAP_00003299,colon_107,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003300,case_00508,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003301,case_00133,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003302,Case_00767_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003303,amos_0092,AMOS,unknown,unknown,unknown
+BDMAP_00003304,s0482,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003305,Case_00704_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003306,s0830,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003307,PETCT_13b40a817b,autoPET,unknown,unknown,unknown
+BDMAP_00003308,TCIAColon_0197_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003309,NIH-LYMPH-MED-001_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003310,TCIAColon_0275_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003311,Case_00814_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003312,case_00184,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003313,TCIAColon_0239_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003314,TCIAColon_0145_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003315,case_00514,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003316,TCIAColon_0048_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003317,amos_0273,AMOS,unknown,unknown,unknown
+BDMAP_00003318,FLARE23_Ts_0100_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003319,pancreas_001,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003320,CPTAC-PDA-C3N-03039_2_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003321,hepaticvessel_434,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003322,s0957,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003323,hepaticvessel_252,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003324,case_00263,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003325,s0102,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003326,pancreas_321,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003327,colon_059,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003328,TCIAColon_0227_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003329,pancreas_101,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003330,liver_111,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003331,lung_061,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003332,PETCT_a3df01d3a3,autoPET,unknown,unknown,unknown
+BDMAP_00003333,colon_054,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003334,PETCT_77bceab232,autoPET,unknown,unknown,unknown
+BDMAP_00003335,NIH-LYMPH-MED-018_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003336,FLARE23_Ts_0094_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003337,hepaticvessel_084,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003338,TCIAColon_0057_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003339,PETCT_ab953a5230,autoPET,unknown,unknown,unknown
+BDMAP_00003340,amos_0245,AMOS,unknown,unknown,unknown
+BDMAP_00003341,pancreas_154,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003342,s0111,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003343,case_00219,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003344,hepaticvessel_110,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003345,TCIAColon_0292_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003346,s0073,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003347,pancreas_135,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003348,TCIAColon_0143_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003349,CPTAC-PDA-C3N-01166_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003350,TCGA-SARC-A8VG_0_0,TCGA-SARC,unknown,unknown,unknown
+BDMAP_00003351,amos_0180,AMOS,unknown,unknown,unknown
+BDMAP_00003352,Case_00237_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003353,TCIAColon_0263_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003354,volume-135,CT-ORG,unknown,unknown,unknown
+BDMAP_00003355,lung_025,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003356,pancreas_186,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003357,colon_216,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003358,case_00502,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003359,case_00273,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003360,PETCT_9c8842d12e,autoPET,unknown,unknown,unknown
+BDMAP_00003361,liver_94,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003362,PETCT_c2a51a65c6,autoPET,unknown,unknown,unknown
+BDMAP_00003363,case_00533,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003364,case_00103,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003365,hepaticvessel_068,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003366,hepaticvessel_148,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003367,pancreas_015,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003368,colon_019,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003369,TCIAColon_0155_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003370,PETCT_9a418f3b3a,autoPET,unknown,unknown,unknown
+BDMAP_00003371,spleen_9,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003372,img0038,BTCV,healthy,healthy,healthy
+BDMAP_00003373,colon_136,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003374,s0305,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003375,TCIAColon_0043_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003376,pancreas_400,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003377,liver_32,LiTS,healthy,unknown,unknown
+BDMAP_00003378,PETCT_ae46202abb,autoPET,unknown,unknown,unknown
+BDMAP_00003379,PETCT_65a1330e90,autoPET,unknown,unknown,unknown
+BDMAP_00003380,FLARE23_Ts_0029_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003381,case_00147,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003382,LDCT-L237_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00003383,hepaticvessel_069,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003384,case_00024,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003385,pancreas_287,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003386,hepaticvessel_296,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003387,pancreas_502,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003388,PETCT_1781ba966c,autoPET,unknown,unknown,unknown
+BDMAP_00003389,PETCT_a2a68bbe97,autoPET,unknown,unknown,unknown
+BDMAP_00003390,PETCT_3ba0277c0c,autoPET,unknown,unknown,unknown
+BDMAP_00003391,PETCT_d7ca3d4aaa,autoPET,unknown,unknown,unknown
+BDMAP_00003392,case_00018,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003393,PETCT_389462c0ac,autoPET,unknown,unknown,unknown
+BDMAP_00003394,NIH-LYMPH-ABD-009_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003395,hepaticvessel_099,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003396,pancreas_294,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003397,s1145,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003398,TCIAColon_0178_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003399,s0258,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003400,pancreas_386,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003401,PETCT_4776e75543,autoPET,unknown,unknown,unknown
+BDMAP_00003402,TCIAColon_0261_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003403,s0343,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003404,TCIAColon_0298_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003405,PETCT_dd6165ae36,autoPET,unknown,unknown,unknown
+BDMAP_00003406,case_00173,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003407,CPTAC-CCRCC-C3L-01954_1_5,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003408,TCIAColon_0137_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003409,case_00280,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003410,amos_0160,AMOS,unknown,unknown,unknown
+BDMAP_00003411,case_00418,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003412,colon_075,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003413,s0878,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003414,s1362,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003415,volume-130,CT-ORG,unknown,unknown,unknown
+BDMAP_00003416,PETCT_0f44cec2e6,autoPET,unknown,unknown,unknown
+BDMAP_00003417,hepaticvessel_050,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003418,TCIAColon_0032_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003419,s1395,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003420,hepaticvessel_330,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003421,TCGA-BLCA-4Z-AA7W_0_1,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00003422,case_00022,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003423,amos_0170,AMOS,unknown,unknown,unknown
+BDMAP_00003424,PETCT_3c3ee87fc6,autoPET,unknown,unknown,unknown
+BDMAP_00003425,case_00251,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003426,PETCT_d0ea6c975f,autoPET,unknown,unknown,unknown
+BDMAP_00003427,pancreas_170,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003428,PETCT_a4ccc397a9,autoPET,unknown,unknown,unknown
+BDMAP_00003429,Case_00539_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003430,NIH-LYMPH-ABD-083_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003431,hepaticvessel_264,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003432,s0045,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003433,PETCT_c7dc6f848c,autoPET,unknown,unknown,unknown
+BDMAP_00003434,TCIAColon_0112_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003435,case_00047,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003436,pancreas_034,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003437,s1013,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003438,pancreas_277,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003439,liver_82,LiTS,unhealthy,unknown,unknown
+BDMAP_00003440,pancreas_356,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003441,case_00234,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003442,TCIAColon_0030_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003443,pancreas_212,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003444,case_00585,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003445,amos_0094,AMOS,unknown,unknown,unknown
+BDMAP_00003446,s0711,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003447,case_00253,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003448,case_00088,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003449,FLARE23_Ts_0070_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003450,word_0127,WORD,unknown,unknown,unknown
+BDMAP_00003451,pancreas_291,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003452,pancreas_184,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003453,PETCT_f1ca0f7c4c,autoPET,unknown,unknown,unknown
+BDMAP_00003454,PETCT_d325897ff4,autoPET,unknown,unknown,unknown
+BDMAP_00003455,case_00544,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003456,CPTAC-UCEC-C3L-01744_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003457,case_00192,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003458,word_0006,WORD,unknown,unknown,unknown
+BDMAP_00003459,s1037,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003460,hepaticvessel_087,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003461,case_00539,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003462,hepaticvessel_382,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003463,word_0051,WORD,unknown,unknown,unknown
+BDMAP_00003464,pancreas_054,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003465,case_00119,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003466,word_0039,WORD,unknown,unknown,unknown
+BDMAP_00003467,CPTAC-UCEC-C3N-00520_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003468,word_0121,WORD,unknown,unknown,unknown
+BDMAP_00003469,TCIAColon_0008_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003470,TCIAColon_0148_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003471,amos_0156,AMOS,unknown,unknown,unknown
+BDMAP_00003472,PETCT_4e3d83bfe3,autoPET,unknown,unknown,unknown
+BDMAP_00003473,TCIAColon_0028_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003474,s0040,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003475,PETCT_1a90052cb2,autoPET,unknown,unknown,unknown
+BDMAP_00003476,PETCT_dc15c1d9bb,autoPET,unknown,unknown,unknown
+BDMAP_00003477,spleen_10,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003478,PETCT_e4e99dbb47,autoPET,unknown,unknown,unknown
+BDMAP_00003479,pancreas_098,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003480,img0024,BTCV,healthy,healthy,healthy
+BDMAP_00003481,liver_129,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003482,liver_18,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003483,pancreas_333,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003484,case_00158,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003485,s0161,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003486,case_00053,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003487,TCIAColon_0225_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003488,PETCT_8b74860ce6,autoPET,unknown,unknown,unknown
+BDMAP_00003489,FLARE23_Ts_0063_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003490,hepaticvessel_228,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003491,case_00440,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003492,s0480,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003493,case_00102,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003494,TCGA-STAD-A8DL_0_2,TCGA-STAD,unknown,unknown,unknown
+BDMAP_00003495,PETCT_14c4d2c208,autoPET,unknown,unknown,unknown
+BDMAP_00003496,TCIAColon_0098_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003497,liver_101,LiTS,unhealthy,unknown,unknown
+BDMAP_00003498,s1012,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003499,Case_00940_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003500,TCIAColon_0219_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003501,PETCT_7094acd4c0,autoPET,unknown,unknown,unknown
+BDMAP_00003502,pancreas_180,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003503,amos_0192,AMOS,unknown,unknown,unknown
+BDMAP_00003504,PETCT_da4ce0da01,autoPET,unknown,unknown,unknown
+BDMAP_00003505,CPTAC-UCEC-C3N-00866_2_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003506,case_00196,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003507,hepaticvessel_040,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003508,hepaticvessel_214,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003509,FLARE23_Ts_0066_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003510,colon_192,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003511,PETCT_a3ce52b2a8,autoPET,unknown,unknown,unknown
+BDMAP_00003512,s1119,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003513,liver_64,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003514,case_00278,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003515,s1199,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003516,case_00549,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003517,TCIAColon_0298_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003518,s0794,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003519,amos_0302,AMOS,unknown,unknown,unknown
+BDMAP_00003520,case_00071,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003521,PETCT_c10f48b173,autoPET,unknown,unknown,unknown
+BDMAP_00003522,30_image,CHAOS,healthy,healthy,healthy
+BDMAP_00003523,PETCT_02ba7e20f5,autoPET,unknown,unknown,unknown
+BDMAP_00003524,liver_57,LiTS,unhealthy,unknown,unknown
+BDMAP_00003525,pancreas_246,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003526,PETCT_86153b2974,autoPET,unknown,unknown,unknown
+BDMAP_00003527,10_image,CHAOS,healthy,healthy,healthy
+BDMAP_00003528,pancreas_363,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003529,case_00010,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003530,case_00126,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003531,case_00135,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003532,PETCT_e5c7be07a8,autoPET,unknown,unknown,unknown
+BDMAP_00003533,PETCT_7d01eb835d,autoPET,unknown,unknown,unknown
+BDMAP_00003534,liver_174,MSD-Liver,unknown,unknown,unknown
+BDMAP_00003535,case_00012,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003536,spleen_24,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003537,PETCT_4bab91dccd,autoPET,unknown,unknown,unknown
+BDMAP_00003538,pancreas_453,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003539,img0002,BTCV,healthy,healthy,healthy
+BDMAP_00003540,PETCT_4a72eeb991,autoPET,unknown,unknown,unknown
+BDMAP_00003541,FLARE23_Ts_0079_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003542,case_00160,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003543,pancreas_050,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003544,s0664,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003545,PETCT_1a1712f7d0,autoPET,unknown,unknown,unknown
+BDMAP_00003546,TCIAColon_0007_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003547,Case_00942_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003548,TCIAColon_0356_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003549,case_00235,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003550,PETCT_35de69968e,autoPET,unknown,unknown,unknown
+BDMAP_00003551,pancreas_089,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003552,colon_034,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003553,case_00185,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003554,TCIAColon_0293_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003555,PETCT_e5b1d6b4bd,autoPET,unknown,unknown,unknown
+BDMAP_00003556,liver_103,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003557,Case_00944_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003558,case_00446,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003559,Case_00007_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003560,colon_194,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003561,PETCT_098c4b7b87,autoPET,unknown,unknown,unknown
+BDMAP_00003562,TCIAColon_0152_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003563,PETCT_d31c9ebd93,autoPET,unknown,unknown,unknown
+BDMAP_00003564,colon_169,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003565,s0339,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003566,TCIAColon_0017_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003567,TCIAColon_0168_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003568,hepaticvessel_438,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003569,liver_96,LiTS,unhealthy,unknown,unknown
+BDMAP_00003570,s0869,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003571,PETCT_4ea806706c,autoPET,unknown,unknown,unknown
+BDMAP_00003572,TCIAColon_0058_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003573,FLARE23_Ts_0048_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003574,amos_0358,AMOS,unknown,unknown,unknown
+BDMAP_00003575,PETCT_69606f6a25,autoPET,unknown,unknown,unknown
+BDMAP_00003576,case_00506,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003577,PANCREAS_0029,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003578,TCIAColon_0189_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003579,Case_00881_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003580,case_00038,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003581,case_00227,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003582,amos_0401,AMOS,unknown,unknown,unknown
+BDMAP_00003583,PETCT_4c670a5445,autoPET,unknown,unknown,unknown
+BDMAP_00003584,s0644,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003585,PETCT_db3daf78d2,autoPET,unknown,unknown,unknown
+BDMAP_00003586,Case_00718_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003587,FLARE23_Ts_0019_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003588,spleen_26,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003589,s1135,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003590,pancreas_114,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003591,TCIAColon_0029_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003592,pancreas_411,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003593,pancreas_156,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003594,amos_0142,AMOS,unknown,unknown,unknown
+BDMAP_00003595,CPTAC-PDA-C3N-01165_0_6,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003596,s0325,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003597,pancreas_436,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003598,pancreas_268,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003599,TCIAColon_0064_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003600,case_00170,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003601,PETCT_eee2ede9ad,autoPET,unknown,unknown,unknown
+BDMAP_00003602,spleen_46,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003603,case_00021,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003604,hepaticvessel_404,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003605,word_0048,WORD,unknown,unknown,unknown
+BDMAP_00003606,PETCT_c2ffda4725,autoPET,unknown,unknown,unknown
+BDMAP_00003607,s0934,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003608,case_00581,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003609,liver_161,MSD-Liver,unknown,unknown,unknown
+BDMAP_00003610,PETCT_ea9302fb0f,autoPET,unknown,unknown,unknown
+BDMAP_00003611,TCIAColon_0274_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003612,pancreas_149,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003613,Case_00801_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003614,case_00234,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003615,case_00163,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003616,CPTAC-PDA-C3N-02971_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003617,s0222,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003618,TCIAColon_0252_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003619,PETCT_8bf08c9a42,autoPET,unknown,unknown,unknown
+BDMAP_00003620,Case_00873_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003621,TCIAColon_0062_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003622,PETCT_855c7fca12,autoPET,unknown,unknown,unknown
+BDMAP_00003623,s1102,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003624,s0256,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003625,amos_0212,AMOS,unknown,unknown,unknown
+BDMAP_00003626,volume-30,CT-ORG,unknown,unknown,unknown
+BDMAP_00003627,PETCT_777fa0ba88,autoPET,unknown,unknown,unknown
+BDMAP_00003628,Case_00045_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003629,Case_00048_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003630,TCIAColon_0247_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003631,pancreas_313,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003632,s1023,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003633,pancreas_323,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003634,colon_165,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003635,s1086,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003636,Case_00468_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003637,PETCT_ccb9c375b2,autoPET,unknown,unknown,unknown
+BDMAP_00003638,CPTAC-CCRCC-C3N-00380_0_7,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003639,hepaticvessel_323,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003640,colon_163,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003641,PETCT_29b372cb99,autoPET,unknown,unknown,unknown
+BDMAP_00003642,hepaticvessel_043,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003643,s0661,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003644,PANCREAS_0043,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003645,Case_00255_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003646,PETCT_978c395243,autoPET,unknown,unknown,unknown
+BDMAP_00003647,img0031,BTCV,healthy,healthy,healthy
+BDMAP_00003648,PETCT_f4a5ebd915,autoPET,unknown,unknown,unknown
+BDMAP_00003649,TCIAColon_0088_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003650,pancreas_412,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003651,CPTAC-UCEC-C3N-01008_0_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003652,s0456,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003653,hepaticvessel_409,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003654,TCIAColon_0293_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003655,NIH-LYMPH-ABD-068_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003656,case_00113,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003657,pancreas_165,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003658,pancreas_155,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003659,PETCT_44bf7dc508,autoPET,unknown,unknown,unknown
+BDMAP_00003660,TCIAColon_0209_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003661,s1244,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003662,Case_00916_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003663,TCIAColon_0271_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003664,liver_110,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003665,Case_00301_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003666,FLARE23_Ts_0053_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003667,TCIAColon_0108_1_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003668,PETCT_48c70dc4a3,autoPET,unknown,unknown,unknown
+BDMAP_00003669,s0472,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003670,TCIAColon_0049_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003671,hepaticvessel_421,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003672,case_00159,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003673,s0586,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003674,word_0107,WORD,unknown,unknown,unknown
+BDMAP_00003675,hepaticvessel_086,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003676,PETCT_4481687483,autoPET,unknown,unknown,unknown
+BDMAP_00003677,PETCT_81debf13a1,autoPET,unknown,unknown,unknown
+BDMAP_00003678,PETCT_e1a4145b63,autoPET,unknown,unknown,unknown
+BDMAP_00003679,s0796,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003680,colon_208,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003681,liver_175,MSD-Liver,unknown,unknown,unknown
+BDMAP_00003682,PETCT_19838cb8e5,autoPET,unknown,unknown,unknown
+BDMAP_00003683,pancreas_415,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003684,s0982,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003685,pancreas_285,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003686,TCIAColon_0130_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003687,Case_00757_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003688,PETCT_ea6c621616,autoPET,unknown,unknown,unknown
+BDMAP_00003689,hepaticvessel_384,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003690,Case_00523_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003691,TCIAColon_0166_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003692,word_0137,WORD,unknown,unknown,unknown
+BDMAP_00003693,word_0080,WORD,unknown,unknown,unknown
+BDMAP_00003694,case_00517,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003695,word_0041,WORD,unknown,unknown,unknown
+BDMAP_00003696,word_0064,WORD,unknown,unknown,unknown
+BDMAP_00003697,CPTAC-CCRCC-C3N-00492_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003698,PETCT_275fb00a66,autoPET,unknown,unknown,unknown
+BDMAP_00003699,PETCT_bbb83facb4,autoPET,unknown,unknown,unknown
+BDMAP_00003700,TCIAColon_0127_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003701,case_00117,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003702,img0032,BTCV,healthy,healthy,healthy
+BDMAP_00003703,pancreas_097,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003704,Case_00299_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003705,PETCT_1fa22c576e,autoPET,unknown,unknown,unknown
+BDMAP_00003706,Case_00417_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003707,TCIAColon_0151_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003708,TCIAColon_0148_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00003709,PETCT_cd2ef932b5,autoPET,unknown,unknown,unknown
+BDMAP_00003710,word_0098,WORD,unknown,unknown,unknown
+BDMAP_00003711,CPTAC-PDA-C3N-03039_3_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003712,amos_0154,AMOS,unknown,unknown,unknown
+BDMAP_00003713,case_00127,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003714,hepaticvessel_202,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003715,PETCT_5e81863014,autoPET,unknown,unknown,unknown
+BDMAP_00003716,amos_0076,AMOS,unknown,unknown,unknown
+BDMAP_00003717,case_00510,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003718,Case_00660_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003719,PETCT_53dad1785b,autoPET,unknown,unknown,unknown
+BDMAP_00003720,amos_0119,AMOS,unknown,unknown,unknown
+BDMAP_00003721,case_00281,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003722,case_00215,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003723,hepaticvessel_031,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003724,Case_00670_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003725,s0486,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003726,TCIAColon_0263_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003727,case_00229,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003728,PETCT_2ad62beb52,autoPET,unknown,unknown,unknown
+BDMAP_00003729,TCIAColon_0099_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003730,PETCT_89fb723947,autoPET,unknown,unknown,unknown
+BDMAP_00003731,amos_0371,AMOS,unknown,unknown,unknown
+BDMAP_00003732,Case_00700_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003733,word_0026,WORD,unknown,unknown,unknown
+BDMAP_00003734,pancreas_425,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003735,case_00178,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003736,case_00091,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003737,s0705,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003738,TCIAColon_0152_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003739,TCIAColon_0277_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003740,case_00003,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003741,pancreas_245,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003742,s0096,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003743,TCIAColon_0167_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003744,pancreas_071,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003745,s0985,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003746,hepaticvessel_374,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003747,amos_0124,AMOS,unknown,unknown,unknown
+BDMAP_00003748,NIH-LYMPH-MED-020_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003749,case_00527,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003750,hepaticvessel_372,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003751,PETCT_9b1bb2165a,autoPET,unknown,unknown,unknown
+BDMAP_00003752,case_00232,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003753,CPTAC-CCRCC-C3N-00380_0_8,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003754,PETCT_da6161d7eb,autoPET,unknown,unknown,unknown
+BDMAP_00003755,PETCT_e8624bab41,autoPET,unknown,unknown,unknown
+BDMAP_00003756,hepaticvessel_380,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003757,TCIAColon_0081_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003758,PETCT_1928952a0f,autoPET,unknown,unknown,unknown
+BDMAP_00003759,case_00194,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003760,pancreas_082,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003761,s0393,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003762,case_00069,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003763,liver_51,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003764,Case_00808_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003765,s0402,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003766,s0422,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003767,case_00200,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003768,hepaticvessel_298,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003769,pancreas_262,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003770,s0860,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003771,pancreas_049,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003772,TCGA-BLCA-4Z-AA7W_0_4,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00003773,s0845,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003774,case_00588,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003775,amos_0030,AMOS,unknown,unknown,unknown
+BDMAP_00003776,pancreas_194,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003777,CPTAC-UCEC-C3L-01246_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003778,PETCT_e03b96666f,autoPET,unknown,unknown,unknown
+BDMAP_00003779,TCIAColon_0255_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003780,hepaticvessel_358,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003781,pancreas_122,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003782,PETCT_6e7c7f8087,autoPET,unknown,unknown,unknown
+BDMAP_00003783,TCIAColon_0136_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003784,pancreas_352,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003785,PETCT_b0e002e974,autoPET,unknown,unknown,unknown
+BDMAP_00003786,PETCT_3c71e8f518,autoPET,unknown,unknown,unknown
+BDMAP_00003787,PETCT_c2b776974a,autoPET,unknown,unknown,unknown
+BDMAP_00003788,hepaticvessel_085,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003789,pancreas_008,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003790,TCIAColon_0144_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003791,amos_0188,AMOS,unknown,unknown,unknown
+BDMAP_00003792,colon_186,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003793,spleen_47,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003794,s0551,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003795,spleen_20,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003796,PETCT_ca29501275,autoPET,unknown,unknown,unknown
+BDMAP_00003797,TCIAColon_0017_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003798,liver_30,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003799,amos_0366,AMOS,unknown,unknown,unknown
+BDMAP_00003800,s0057,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003801,PETCT_69aa8dbfd2,autoPET,unknown,unknown,unknown
+BDMAP_00003802,NIH-LYMPH-MED-022_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003803,TCIAColon_0091_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003804,spleen_19,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003805,s0212,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003806,case_00274,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003807,Case_00985_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003808,case_00236,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003809,pancreas_148,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003810,Case_00051_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003811,case_00176,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003812,pancreas_157,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003813,CPTAC-PDA-C3N-03000_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003814,img0067,BTCV,healthy,healthy,healthy
+BDMAP_00003815,case_00097,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003816,Case_00407_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003817,TCIAColon_0234_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003818,amos_0043,AMOS,unknown,unknown,unknown
+BDMAP_00003819,amos_0171,AMOS,unknown,unknown,unknown
+BDMAP_00003820,liver_133,MSD-Liver,unknown,unknown,unknown
+BDMAP_00003821,img0068,BTCV,healthy,healthy,healthy
+BDMAP_00003822,pancreas_167,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003823,case_00030,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003824,pancreas_350,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003825,CPTAC-CCRCC-C3L-01459_1_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003826,TCIAColon_0231_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003827,colon_207,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003828,CPTAC-CCRCC-C3N-00435_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00003829,hepaticvessel_407,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003830,img0070,BTCV,healthy,healthy,healthy
+BDMAP_00003831,hepaticvessel_192,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003832,case_00164,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003833,case_00402,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003834,amos_0381,AMOS,unknown,unknown,unknown
+BDMAP_00003835,hepaticvessel_320,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003836,TCIAColon_0085_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00003837,s0986,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003838,PETCT_f75d25523c,autoPET,unknown,unknown,unknown
+BDMAP_00003839,PETCT_87afc291ec,autoPET,unknown,unknown,unknown
+BDMAP_00003840,pancreas_378,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003841,PETCT_5060603ba4,autoPET,unknown,unknown,unknown
+BDMAP_00003842,s0806,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003843,TCIAColon_0220_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003844,lung_042,MSD-Lung,unknown,unknown,unknown
+BDMAP_00003845,amos_0196,AMOS,unknown,unknown,unknown
+BDMAP_00003846,PETCT_d27451634d,autoPET,unknown,unknown,unknown
+BDMAP_00003847,colon_025,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003848,PETCT_5d10be5b89,autoPET,unknown,unknown,unknown
+BDMAP_00003849,case_00223,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003850,TCIAColon_0300_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00003851,case_00131,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003852,PETCT_515c40c4a6,autoPET,unknown,unknown,unknown
+BDMAP_00003853,pancreas_094,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003854,TCIAColon_0202_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003855,Case_00012_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003856,TCIAColon_0095_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003857,liver_84,LiTS,unhealthy,unknown,unknown
+BDMAP_00003858,img0003,BTCV,healthy,healthy,healthy
+BDMAP_00003859,PETCT_3fd361ec14,autoPET,unknown,unknown,unknown
+BDMAP_00003860,PETCT_ae6a37a9d6,autoPET,unknown,unknown,unknown
+BDMAP_00003861,PETCT_89065bc4ab,autoPET,unknown,unknown,unknown
+BDMAP_00003862,Case_00207_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003863,liver_147,MSD-Liver,unknown,unknown,unknown
+BDMAP_00003864,PETCT_bca97006e4,autoPET,unknown,unknown,unknown
+BDMAP_00003865,TCIAColon_0118_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003866,s1278,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003867,liver_49,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003868,spleen_61,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003869,case_00116,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003870,Case_00787_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003871,s0863,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003872,hepaticvessel_363,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003873,NIH-LYMPH-ABD-069_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003874,TCIAColon_0238_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003875,s0574,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003876,PANCREAS_0008,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00003877,volume-129,CT-ORG,unknown,unknown,unknown
+BDMAP_00003878,PETCT_6e1dba94e8,autoPET,unknown,unknown,unknown
+BDMAP_00003879,TCIAColon_0036_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003880,case_00250,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003881,PETCT_e9e1a391b5,autoPET,unknown,unknown,unknown
+BDMAP_00003882,case_00101,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003883,PETCT_d63f6162a6,autoPET,unknown,unknown,unknown
+BDMAP_00003884,pancreas_105,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003885,TCIAColon_0254_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003886,pancreas_181,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003887,s0939,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003888,PETCT_b926177c87,autoPET,unknown,unknown,unknown
+BDMAP_00003889,CPTAC-PDA-C3N-03430_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003890,colon_053,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003891,PETCT_4c75fa4a5d,autoPET,unknown,unknown,unknown
+BDMAP_00003892,s1400,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003893,Case_00295_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003894,TCIAColon_0165_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003895,PETCT_a41d59682f,autoPET,unknown,unknown,unknown
+BDMAP_00003896,TCGA-BLCA-4Z-AA7M_0_2,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00003897,liver_82,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003898,liver_46,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003899,word_0146,WORD,unknown,unknown,unknown
+BDMAP_00003900,pancreas_067,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003901,TCIAColon_0005_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003902,PETCT_3eac8f16d4,autoPET,unknown,unknown,unknown
+BDMAP_00003903,PETCT_870181d7fd,autoPET,unknown,unknown,unknown
+BDMAP_00003904,PETCT_c29aba73da,autoPET,unknown,unknown,unknown
+BDMAP_00003905,Case_00877_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003906,img0021,BTCV,healthy,healthy,healthy
+BDMAP_00003907,TCIAColon_0163_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003908,amos_0297,AMOS,unknown,unknown,unknown
+BDMAP_00003909,CPTAC-PDA-C3N-03039_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00003910,hepaticvessel_127,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003911,liver_12,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003912,TCIAColon_0139_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003913,TCIAColon_0210_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003914,TCIAColon_0159_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003915,PETCT_8b74860ce6,autoPET,unknown,unknown,unknown
+BDMAP_00003916,colon_056,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003917,FLARE23_Ts_0078_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003918,pancreas_084,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003919,NIH-LYMPH-ABD-070_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00003920,liver_27,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00003921,CPTAC-UCEC-C3L-00962_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00003922,TCIAColon_0149_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003923,case_00042,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003924,PETCT_7fbb39290e,autoPET,unknown,unknown,unknown
+BDMAP_00003925,s1350,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003926,PETCT_99a7bfad23,autoPET,unknown,unknown,unknown
+BDMAP_00003927,word_0065,WORD,unknown,unknown,unknown
+BDMAP_00003928,case_00075,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003929,s0707,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003930,case_00525,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003931,s1383,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003932,liver_60,LiTS,unhealthy,unknown,unknown
+BDMAP_00003933,TCIAColon_0264_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003934,PETCT_48cb8662f7,autoPET,unknown,unknown,unknown
+BDMAP_00003935,TCGA-BLCA-4Z-AA80_0_4,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00003936,TCIAColon_0294_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003937,Case_01045_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003938,PETCT_141fffa2a9,autoPET,unknown,unknown,unknown
+BDMAP_00003939,pancreas_495,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003940,TCGA-OV-61-1998_1_3,TCGA-OV,unknown,unknown,unknown
+BDMAP_00003941,PETCT_147a9fcff3,autoPET,unknown,unknown,unknown
+BDMAP_00003942,hepaticvessel_351,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00003943,case_00572,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003944,TCIAColon_0185_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00003945,TCIAColon_0105_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00003946,colon_175,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003947,case_00498,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003948,PETCT_f2f28337ba,autoPET,unknown,unknown,unknown
+BDMAP_00003949,amos_0149,AMOS,unknown,unknown,unknown
+BDMAP_00003950,spleen_41,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00003951,PETCT_1bdefef7d5,autoPET,unknown,unknown,unknown
+BDMAP_00003952,case_00504,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003953,word_0055,WORD,unknown,unknown,unknown
+BDMAP_00003954,word_0118,WORD,unknown,unknown,unknown
+BDMAP_00003955,case_00477,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003956,case_00550,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003957,case_00120,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003958,pancreas_394,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00003959,Case_00543_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003960,img0039,BTCV,healthy,healthy,healthy
+BDMAP_00003961,pancreas_024,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00003962,TCIAColon_0276_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003963,case_00082,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003964,TCIAColon_0019_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00003965,s0531,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00003966,LDCT-L299_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00003967,amos_0217,AMOS,unknown,unknown,unknown
+BDMAP_00003968,TCIAColon_0287_0_5,TCIAColon,unknown,unknown,unknown
+BDMAP_00003969,volume-138,CT-ORG,unknown,unknown,unknown
+BDMAP_00003970,word_0133,WORD,unknown,unknown,unknown
+BDMAP_00003971,case_00483,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003972,colon_127,MSD-Colon,unknown,unknown,unknown
+BDMAP_00003973,case_00189,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003974,PETCT_a19c2a0c65,autoPET,unknown,unknown,unknown
+BDMAP_00003975,word_0108,WORD,unknown,unknown,unknown
+BDMAP_00003976,case_00543,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003977,PETCT_28a0a0a163,autoPET,unknown,unknown,unknown
+BDMAP_00003978,hepaticvessel_123,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003979,Case_00971_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003980,hepaticvessel_072,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00003981,FLARE23_Ts_0041_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00003982,img0026,BTCV,healthy,healthy,healthy
+BDMAP_00003983,PETCT_ca62984a81,autoPET,unknown,unknown,unknown
+BDMAP_00003984,hepaticvessel_309,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003985,LDCT-L210_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00003986,Case_00426_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00003987,hepaticvessel_097,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00003988,amos_0406,AMOS,unknown,unknown,unknown
+BDMAP_00003989,PETCT_6dd36a2c19,autoPET,unknown,unknown,unknown
+BDMAP_00003990,PETCT_b79961f3f6,autoPET,unknown,unknown,unknown
+BDMAP_00003991,TCIAColon_0093_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00003992,PETCT_792d7b6ad0,autoPET,unknown,unknown,unknown
+BDMAP_00003993,img0069,BTCV,healthy,healthy,healthy
+BDMAP_00003994,case_00007,KiTS21,unknown,unknown,unhealthy
+BDMAP_00003995,TCIAColon_0240_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00003996,case_00415,KiTS23,unknown,unknown,unhealthy
+BDMAP_00003997,PETCT_2f9aec0275,autoPET,unknown,unknown,unknown
+BDMAP_00003998,case_00144,KiTS19,unknown,unknown,unhealthy
+BDMAP_00003999,amos_0033,AMOS,unknown,unknown,unknown
+BDMAP_00004000,PETCT_a61d8768d0,autoPET,unknown,unknown,unknown
+BDMAP_00004001,s1120,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004002,Case_00958_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004003,FLARE23_Ts_0039_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004004,PETCT_ebb0045704,autoPET,unknown,unknown,unknown
+BDMAP_00004005,pancreas_435,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004006,s0785,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004007,hepaticvessel_158,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004008,amos_0011,AMOS,unknown,unknown,unknown
+BDMAP_00004009,TCIAColon_0283_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004010,hepaticvessel_041,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004011,case_00258,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004012,FLARE23_Ts_0030_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004013,hepaticvessel_132,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004014,case_00045,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004015,pancreas_410,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004016,liver_62,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004017,liver_48,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004018,TCIAColon_0222_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004019,s0264,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004020,PETCT_7323c415d0,autoPET,unknown,unknown,unknown
+BDMAP_00004021,TCIAColon_0217_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004022,word_0093,WORD,unknown,unknown,unknown
+BDMAP_00004023,pancreas_191,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004024,hepaticvessel_284,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004025,TCIAColon_0069_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004026,s0979,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004027,case_00003,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004028,liver_46,LiTS,unhealthy,unknown,unknown
+BDMAP_00004029,PETCT_71ac560ffe,autoPET,unknown,unknown,unknown
+BDMAP_00004030,case_00272,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004031,case_00567,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004032,TCIAColon_0040_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004033,case_00034,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004034,hepaticvessel_377,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004035,s1397,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004036,TCIAColon_0173_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004037,volume-47,CT-ORG,unknown,unknown,unknown
+BDMAP_00004038,TCIAColon_0107_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004039,case_00044,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004040,word_0072,WORD,unknown,unknown,unknown
+BDMAP_00004041,Case_00774_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004042,Case_00003_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004043,CPTAC-PDA-C3N-01382_0_8,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004044,img0080,BTCV,healthy,healthy,healthy
+BDMAP_00004045,hepaticvessel_408,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004046,TCIAColon_0087_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004047,s1171,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004048,FLARE23_Ts_0044_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004049,PETCT_a22ec7f62b,autoPET,unknown,unknown,unknown
+BDMAP_00004050,PETCT_fc0389a486,autoPET,unknown,unknown,unknown
+BDMAP_00004051,s1330,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004052,Case_00945_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004053,hepaticvessel_116,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004054,PETCT_80f7760f65,autoPET,unknown,unknown,unknown
+BDMAP_00004055,amos_0081,AMOS,unknown,unknown,unknown
+BDMAP_00004056,s1367,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004057,PETCT_60baa6979c,autoPET,unknown,unknown,unknown
+BDMAP_00004058,PETCT_57c05962c1,autoPET,unknown,unknown,unknown
+BDMAP_00004059,hepaticvessel_237,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004060,pancreas_360,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004061,s1307,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004062,TCIAColon_0238_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004063,TCIAColon_0143_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004064,volume-132,CT-ORG,unknown,unknown,unknown
+BDMAP_00004065,case_00571,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004066,case_00448,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004067,PETCT_c08293f2b2,autoPET,unknown,unknown,unknown
+BDMAP_00004068,amos_0351,AMOS,unknown,unknown,unknown
+BDMAP_00004069,img0022,BTCV,healthy,healthy,healthy
+BDMAP_00004070,TCIAColon_0057_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004071,hepaticvessel_281,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004072,TCIAColon_0061_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004073,PETCT_a1d93ebc74,autoPET,unknown,unknown,unknown
+BDMAP_00004074,case_00562,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004075,Case_00777_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004076,PETCT_73fda3a382,autoPET,unknown,unknown,unknown
+BDMAP_00004077,pancreas_239,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004078,TCIAColon_0125_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004079,pancreas_020,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004080,s1321,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004081,PETCT_eca59074b9,autoPET,unknown,unknown,unknown
+BDMAP_00004082,PETCT_80d7e682f7,autoPET,unknown,unknown,unknown
+BDMAP_00004083,case_00060,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004084,27_image,CHAOS,healthy,healthy,healthy
+BDMAP_00004085,PETCT_411801de5a,autoPET,unknown,unknown,unknown
+BDMAP_00004086,hepaticvessel_112,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004087,case_00404,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004088,6_image,CHAOS,healthy,healthy,healthy
+BDMAP_00004089,TCIAColon_0289_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004090,PETCT_54bed1d98f,autoPET,unknown,unknown,unknown
+BDMAP_00004091,PETCT_a4ff5d0d9d,autoPET,unknown,unknown,unknown
+BDMAP_00004092,TCIAColon_0051_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004093,hepaticvessel_045,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004094,img0035,BTCV,healthy,healthy,healthy
+BDMAP_00004095,hepaticvessel_251,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004096,TCIAColon_0251_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004097,pancreas_275,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004098,PANCREAS_0016,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00004099,amos_0111,AMOS,unknown,unknown,unknown
+BDMAP_00004100,TCIAColon_0284_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004101,case_00064,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004102,hepaticvessel_293,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004103,liver_74,LiTS,unhealthy,unknown,unknown
+BDMAP_00004104,case_00125,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004105,TCIAColon_0074_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004106,pancreas_402,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004107,word_0122,WORD,unknown,unknown,unknown
+BDMAP_00004108,volume-108,CT-ORG,unknown,unknown,unknown
+BDMAP_00004109,hepaticvessel_052,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004110,amos_0330,AMOS,unknown,unknown,unknown
+BDMAP_00004111,s0106,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004112,PETCT_e4712dc58c,autoPET,unknown,unknown,unknown
+BDMAP_00004113,case_00419,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004114,Case_00984_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004115,pancreas_081,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004116,s0665,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004117,liver_66,LiTS,unhealthy,unknown,unknown
+BDMAP_00004118,CPTAC-PDA-C3N-01502_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004119,hepaticvessel_225,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004120,TCIAColon_0002_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004121,colon_041,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004122,s0928,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004123,PETCT_993d40ea7e,autoPET,unknown,unknown,unknown
+BDMAP_00004124,s0244,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004125,PETCT_9a583160ea,autoPET,unknown,unknown,unknown
+BDMAP_00004126,PETCT_dc3437c9b9,autoPET,unknown,unknown,unknown
+BDMAP_00004127,hepaticvessel_277,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004128,pancreas_145,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004129,pancreas_175,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004130,case_00098,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004131,case_00253,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004132,colon_109,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004133,PETCT_d65cf203be,autoPET,unknown,unknown,unknown
+BDMAP_00004134,TCIAColon_0138_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004135,TCIAColon_0224_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004136,lung_015,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004137,hepaticvessel_387,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004138,img0074,BTCV,healthy,healthy,healthy
+BDMAP_00004139,PETCT_68a7ade33c,autoPET,unknown,unknown,unknown
+BDMAP_00004140,TCIAColon_0076_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004141,PETCT_d9da6129f8,autoPET,unknown,unknown,unknown
+BDMAP_00004142,PANCREAS_0032,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00004143,TCIAColon_0193_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004144,FLARE23_Ts_0051_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004145,PETCT_0c13e4df10,autoPET,unknown,unknown,unknown
+BDMAP_00004146,PETCT_eafa147e24,autoPET,unknown,unknown,unknown
+BDMAP_00004147,colon_006,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004148,case_00085,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004149,PETCT_65bd1a4c38,autoPET,unknown,unknown,unknown
+BDMAP_00004150,case_00063,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004151,amos_0230,AMOS,unknown,unknown,unknown
+BDMAP_00004152,CPTAC-UCEC-C3N-00732_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004153,amos_0237,AMOS,unknown,unknown,unknown
+BDMAP_00004154,case_00469,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004155,s0754,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004156,PETCT_68f73c4518,autoPET,unknown,unknown,unknown
+BDMAP_00004157,PETCT_14f931f634,autoPET,unknown,unknown,unknown
+BDMAP_00004158,case_00146,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004159,pancreas_487,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004160,TCIAColon_0090_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004161,PETCT_f65602d938,autoPET,unknown,unknown,unknown
+BDMAP_00004162,PETCT_92c3de23f5,autoPET,unknown,unknown,unknown
+BDMAP_00004163,colon_172,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004164,PETCT_d1f456d229,autoPET,unknown,unknown,unknown
+BDMAP_00004165,colon_042,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004166,s0784,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004167,s0315,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004168,amos_0179,AMOS,unknown,unknown,unknown
+BDMAP_00004169,FLARE23_Ts_0021_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004170,hepaticvessel_391,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004171,PETCT_d3d61785e6,autoPET,unknown,unknown,unknown
+BDMAP_00004172,FLARE23_Ts_0026_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004173,PETCT_75e42ff05f,autoPET,unknown,unknown,unknown
+BDMAP_00004174,PETCT_572fca6b44,autoPET,unknown,unknown,unknown
+BDMAP_00004175,case_00157,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004176,amos_0248,AMOS,unknown,unknown,unknown
+BDMAP_00004177,Case_00412_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004178,CPTAC-UCEC-C3N-01003_0_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004179,PETCT_ddbb3c69f0,autoPET,unknown,unknown,unknown
+BDMAP_00004180,pancreas_465,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004181,case_00071,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004182,word_0149,WORD,unknown,unknown,unknown
+BDMAP_00004183,pancreas_382,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004184,pancreas_173,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004185,liver_95,LiTS,unhealthy,unknown,unknown
+BDMAP_00004186,TCIAColon_0104_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004187,liver_55,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004188,s1090,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004189,amos_0259,AMOS,unknown,unknown,unknown
+BDMAP_00004190,s0366,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004191,TCIAColon_0279_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00004192,s0650,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004193,CPTAC-CCRCC-C3L-01465_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004194,CPTAC-CCRCC-C3L-01954_3_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004195,case_00560,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004196,colon_064,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004197,s0753,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004198,pancreas_318,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004199,liver_35,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004200,CPTAC-UCEC-C3N-01172_0_5,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004201,hepaticvessel_390,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004202,PANCREAS_0009,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00004203,TCIAColon_0144_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004204,CPTAC-UCEC-C3N-01003_0_5,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004205,PETCT_4250de48c8,autoPET,unknown,unknown,unknown
+BDMAP_00004206,hepaticvessel_173,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004207,TCIAColon_0185_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004208,CPTAC-CCRCC-C3N-00491_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004209,Case_00514_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004210,CPTAC-CCRCC-C3L-01352_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004211,hepaticvessel_345,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004212,case_00224,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004213,word_0143,WORD,unknown,unknown,unknown
+BDMAP_00004214,s0801,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004215,PETCT_08198c4f0c,autoPET,unknown,unknown,unknown
+BDMAP_00004216,case_00518,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004217,FLARE23_Ts_0060_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004218,s0095,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004219,PETCT_ed9fa4eff1,autoPET,unknown,unknown,unknown
+BDMAP_00004220,PETCT_08cdb15e0b,autoPET,unknown,unknown,unknown
+BDMAP_00004221,NIH-LYMPH-MED-011_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004222,CPTAC-PDA-C3N-03000_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004223,word_0087,WORD,unknown,unknown,unknown
+BDMAP_00004224,Case_00530_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004225,hepaticvessel_315,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004226,PETCT_40f0749cb7,autoPET,unknown,unknown,unknown
+BDMAP_00004227,Case_00661_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004228,liver_117,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004229,pancreas_389,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004230,TCIAColon_0243_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00004231,pancreas_219,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004232,case_00574,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004233,PETCT_e2a729e21f,autoPET,unknown,unknown,unknown
+BDMAP_00004234,word_0044,WORD,unknown,unknown,unknown
+BDMAP_00004235,CPTAC-UCEC-C3N-00743_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004236,Case_00582_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004237,s0916,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004238,PETCT_88bcc970b3,autoPET,unknown,unknown,unknown
+BDMAP_00004239,hepaticvessel_140,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004240,hepaticvessel_452,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004241,PETCT_55e3e62722,autoPET,unknown,unknown,unknown
+BDMAP_00004242,NIH-LYMPH-ABD-051_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004243,TCIAColon_0171_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004244,TCIAColon_0241_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004245,s0970,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004246,PETCT_7a262070a9,autoPET,unknown,unknown,unknown
+BDMAP_00004247,s0440,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004248,PETCT_b53ba7c6bf,autoPET,unknown,unknown,unknown
+BDMAP_00004249,TCIAColon_0252_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004250,case_00029,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004251,hepaticvessel_331,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004252,s0445,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004253,case_00180,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004254,s0703,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004255,TCIAColon_0215_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004256,PETCT_185bac7954,autoPET,unknown,unknown,unknown
+BDMAP_00004257,case_00434,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004258,amos_0321,AMOS,unknown,unknown,unknown
+BDMAP_00004259,PETCT_15a205ffcc,autoPET,unknown,unknown,unknown
+BDMAP_00004260,PETCT_04606080a0,autoPET,unknown,unknown,unknown
+BDMAP_00004261,TCIAColon_0122_1_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004262,pancreas_303,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004263,s0153,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004264,pancreas_229,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004265,case_00257,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004266,amos_0050,AMOS,unknown,unknown,unknown
+BDMAP_00004267,lung_047,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004268,CPTAC-UCEC-C3L-01246_0_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004269,LDCT-L232_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00004270,PETCT_a86b3fad40,autoPET,unknown,unknown,unknown
+BDMAP_00004271,volume-123,CT-ORG,unknown,unknown,unknown
+BDMAP_00004272,TCIAColon_0013_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004273,CPTAC-PDA-C3N-01715_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004274,CPTAC-PDA-C3N-01715_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004275,PETCT_32219760da,autoPET,unknown,unknown,unknown
+BDMAP_00004276,hepaticvessel_395,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004277,CPTAC-UCEC-C3N-00872_0_9,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004278,case_00247,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004279,hepaticvessel_248,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004280,hepaticvessel_302,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004281,liver_26,LiTS,unhealthy,unknown,unknown
+BDMAP_00004282,TCIAColon_0052_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004283,PETCT_249c02c01c,autoPET,unknown,unknown,unknown
+BDMAP_00004284,PETCT_302613f9a5,autoPET,unknown,unknown,unknown
+BDMAP_00004285,PETCT_4a0d2e5166,autoPET,unknown,unknown,unknown
+BDMAP_00004286,pancreas_234,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004287,lung_041,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004288,pancreas_351,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004289,CPTAC-CCRCC-C3L-00610_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004290,FLARE23_Ts_0093_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004291,PETCT_c6730783de,autoPET,unknown,unknown,unknown
+BDMAP_00004292,s0555,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004293,pancreas_395,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004294,case_00006,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004295,pancreas_178,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004296,case_00578,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004297,pancreas_066,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004298,PETCT_cbbc9e2879,autoPET,unknown,unknown,unknown
+BDMAP_00004299,TCIAColon_0271_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004300,s1157,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004301,CPTAC-CCRCC-C3N-00380_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004302,TCIAColon_0164_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004303,case_00078,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004304,liver_80,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004305,Case_00049_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004306,FLARE23_Ts_0068_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004307,pancreas_257,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004308,1_image,CHAOS,healthy,healthy,healthy
+BDMAP_00004309,TCIAColon_0221_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004310,TCGA-OV-61-1907_1_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00004311,hepaticvessel_427,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004312,PETCT_b42adab18e,autoPET,unknown,unknown,unknown
+BDMAP_00004313,TCIAColon_0265_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004314,s0058,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004315,case_00299,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004316,PETCT_20995a0fe1,autoPET,unknown,unknown,unknown
+BDMAP_00004317,case_00073,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004318,PETCT_ccd8f5ff71,autoPET,unknown,unknown,unknown
+BDMAP_00004319,PETCT_29ab45ef17,autoPET,unknown,unknown,unknown
+BDMAP_00004320,PETCT_f144b214af,autoPET,unknown,unknown,unknown
+BDMAP_00004321,NIH-LYMPH-ABD-042_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004322,PETCT_b66ba83594,autoPET,unknown,unknown,unknown
+BDMAP_00004323,Case_00529_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004324,PETCT_7e56b0b62c,autoPET,unknown,unknown,unknown
+BDMAP_00004325,Case_00957_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004326,liver_171,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004327,case_00047,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004328,case_00063,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004329,Case_00432_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004330,amos_0134,AMOS,unknown,unknown,unknown
+BDMAP_00004331,case_00121,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004332,PETCT_119165872d,autoPET,unknown,unknown,unknown
+BDMAP_00004333,amos_0047,AMOS,unknown,unknown,unknown
+BDMAP_00004334,PETCT_a1db71e797,autoPET,unknown,unknown,unknown
+BDMAP_00004335,s1240,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004336,hepaticvessel_344,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004337,PETCT_31ddf5013a,autoPET,unknown,unknown,unknown
+BDMAP_00004338,TCIAColon_0121_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004339,PETCT_3708f576ec,autoPET,unknown,unknown,unknown
+BDMAP_00004340,PETCT_d539f5a88b,autoPET,unknown,unknown,unknown
+BDMAP_00004341,PETCT_6efefcb92a,autoPET,unknown,unknown,unknown
+BDMAP_00004342,TCIAColon_0128_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004343,case_00161,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004344,amos_0125,AMOS,unknown,unknown,unknown
+BDMAP_00004345,PETCT_be3e55a32f,autoPET,unknown,unknown,unknown
+BDMAP_00004346,PETCT_e77c5fca12,autoPET,unknown,unknown,unknown
+BDMAP_00004347,Case_00668_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004348,pancreas_450,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004349,TCGA-OV-61-2016_2_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00004350,PETCT_78b89bc739,autoPET,unknown,unknown,unknown
+BDMAP_00004351,amos_0276,AMOS,unknown,unknown,unknown
+BDMAP_00004352,PETCT_30c4b7062b,autoPET,unknown,unknown,unknown
+BDMAP_00004353,PETCT_44d6ba6772,autoPET,unknown,unknown,unknown
+BDMAP_00004354,case_00112,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004355,PETCT_72725f2bda,autoPET,unknown,unknown,unknown
+BDMAP_00004356,Case_00827_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004357,FLARE23_Ts_0082_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004358,TCIAColon_0222_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004359,PETCT_f5c9b0de6c,autoPET,unknown,unknown,unknown
+BDMAP_00004360,PANCREAS_0035,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00004361,hepaticvessel_274,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004362,amos_0268,AMOS,unknown,unknown,unknown
+BDMAP_00004363,s0965,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004364,Case_00264_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004365,TCIAColon_0039_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004366,s1132,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004367,PETCT_0410759456,autoPET,unknown,unknown,unknown
+BDMAP_00004368,CPTAC-PDA-C3N-03039_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004369,hepaticvessel_108,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004370,FLARE23_Ts_0018_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004371,PETCT_1fc35d02da,autoPET,unknown,unknown,unknown
+BDMAP_00004372,PETCT_30001118d0,autoPET,unknown,unknown,unknown
+BDMAP_00004373,case_00019,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004374,colon_218,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004375,hepaticvessel_182,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004376,FLARE23_Ts_0052_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004377,TCIAColon_0125_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004378,liver_73,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004379,Case_00953_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004380,PETCT_cc7cb73213,autoPET,unknown,unknown,unknown
+BDMAP_00004381,PETCT_048981112f,autoPET,unknown,unknown,unknown
+BDMAP_00004382,s1377,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004383,pancreas_202,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004384,colon_061,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004385,FLARE23_Ts_0077_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004386,hepaticvessel_276,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004387,PETCT_93132553f6,autoPET,unknown,unknown,unknown
+BDMAP_00004388,amos_0353,AMOS,unknown,unknown,unknown
+BDMAP_00004389,case_00553,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004390,lung_009,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004391,PETCT_ed7abf4433,autoPET,unknown,unknown,unknown
+BDMAP_00004392,PETCT_efd619ecbf,autoPET,unknown,unknown,unknown
+BDMAP_00004393,PETCT_9b982e72cb,autoPET,unknown,unknown,unknown
+BDMAP_00004394,lung_092,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004395,case_00493,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004396,s0024,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004397,case_00251,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004398,pancreas_207,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004399,TCGA-BLCA-4Z-AA84_0_2,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00004400,hepaticvessel_183,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004401,TCIAColon_0226_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004402,PETCT_55ae7986e1,autoPET,unknown,unknown,unknown
+BDMAP_00004403,volume-68,CT-ORG,unknown,unknown,unknown
+BDMAP_00004404,hepaticvessel_456,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004405,hepaticvessel_399,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004406,TCIAColon_0213_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004407,case_00457,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004408,word_0089,WORD,unknown,unknown,unknown
+BDMAP_00004409,s0201,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004410,Case_00994_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004411,NIH-LYMPH-ABD-067_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004412,Case_00201_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004413,TCIAColon_0253_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004414,case_00270,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004415,colon_081,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004416,liver_118,LiTS,unhealthy,unknown,unknown
+BDMAP_00004417,case_00289,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004418,img0004,BTCV,healthy,healthy,healthy
+BDMAP_00004419,TCIAColon_0194_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004420,case_00111,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004421,img0006,BTCV,healthy,healthy,healthy
+BDMAP_00004422,Case_00423_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004423,hepaticvessel_242,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004424,TCIAColon_0270_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004425,Case_00824_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004426,PETCT_644d80e987,autoPET,unknown,unknown,unknown
+BDMAP_00004427,case_00475,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004428,Case_01037_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004429,PETCT_16cdbc8689,autoPET,unknown,unknown,unknown
+BDMAP_00004430,TCGA-BLCA-4Z-AA7S_0_1,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00004431,colon_157,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004432,PETCT_2428b44e92,autoPET,unknown,unknown,unknown
+BDMAP_00004433,CPTAC-UCEC-C3L-01732_0_10,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004434,PETCT_71ae114917,autoPET,unknown,unknown,unknown
+BDMAP_00004435,liver_78,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004436,s1283,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004437,case_00219,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004438,PETCT_fde66dd53a,autoPET,unknown,unknown,unknown
+BDMAP_00004439,hepaticvessel_415,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004440,amos_0263,AMOS,unknown,unknown,unknown
+BDMAP_00004441,CPTAC-UCEC-C3N-00872_0_11,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004442,TCIAColon_0020_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004443,s0674,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004444,PETCT_7b42056ee3,autoPET,unknown,unknown,unknown
+BDMAP_00004445,PETCT_9d6e9223cc,autoPET,unknown,unknown,unknown
+BDMAP_00004446,PETCT_20f4a3aa02,autoPET,unknown,unknown,unknown
+BDMAP_00004447,pancreas_401,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004448,PETCT_52f84711a5,autoPET,unknown,unknown,unknown
+BDMAP_00004449,s0683,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004450,colon_159,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004451,TCIAColon_0116_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004452,hepaticvessel_206,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004453,TCIAColon_0212_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004454,PETCT_82137245b0,autoPET,unknown,unknown,unknown
+BDMAP_00004455,Case_01051_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004456,s0271,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004457,case_00465,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004458,PANCREAS_0022,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00004459,liver_72,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004460,CPTAC-CCRCC-C3L-00766_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004461,PETCT_78355d1d4f,autoPET,unknown,unknown,unknown
+BDMAP_00004462,liver_25,LiTS,unhealthy,unknown,unknown
+BDMAP_00004463,amos_0215,AMOS,unknown,unknown,unknown
+BDMAP_00004464,PETCT_bd76c8d299,autoPET,unknown,unknown,unknown
+BDMAP_00004465,s0275,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004466,s1331,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004467,case_00157,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004468,spleen_37,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00004469,hepaticvessel_243,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004470,CPTAC-PDA-C3N-01166_0_11,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004471,s0918,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004472,PETCT_2e44706eaf,autoPET,unknown,unknown,unknown
+BDMAP_00004473,Case_00421_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004474,lung_048,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004475,case_00008,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004476,CPTAC-CCRCC-C3L-00812_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004477,PETCT_ae8c77a995,autoPET,unknown,unknown,unknown
+BDMAP_00004478,TCIAColon_0172_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004479,case_00169,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004480,PANCREAS_0010,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00004481,case_00282,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004482,case_00535,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004483,PETCT_e5e1918765,autoPET,unknown,unknown,unknown
+BDMAP_00004484,amos_0173,AMOS,unknown,unknown,unknown
+BDMAP_00004485,PETCT_85b69fed1c,autoPET,unknown,unknown,unknown
+BDMAP_00004486,colon_177,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004487,PETCT_a37b4bca43,autoPET,unknown,unknown,unknown
+BDMAP_00004488,TCIAColon_0182_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004489,case_00045,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004490,TCIAColon_0210_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004491,colon_065,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004492,PETCT_c73c2685c0,autoPET,unknown,unknown,unknown
+BDMAP_00004493,colon_129,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004494,pancreas_367,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004495,case_00098,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004496,hepaticvessel_261,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004497,PETCT_350e91119a,autoPET,unknown,unknown,unknown
+BDMAP_00004498,liver_135,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004499,case_00167,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004500,TCIAColon_0064_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004501,PETCT_4ef69de4e1,autoPET,unknown,unknown,unknown
+BDMAP_00004502,TCIAColon_0187_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00004503,hepaticvessel_213,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004504,word_0020,WORD,unknown,unknown,unknown
+BDMAP_00004505,TCIAColon_0203_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004506,word_0011,WORD,unknown,unknown,unknown
+BDMAP_00004507,hepaticvessel_204,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004508,liver_79,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004509,liver_83,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004510,case_00513,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004511,pancreas_200,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004512,PETCT_68b75093c5,autoPET,unknown,unknown,unknown
+BDMAP_00004513,hepaticvessel_021,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004514,pancreas_196,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004515,s1349,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004516,word_0135,WORD,unknown,unknown,unknown
+BDMAP_00004517,hepaticvessel_419,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004518,TCIAColon_0133_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004519,TCIAColon_0025_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004520,TCIAColon_0179_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004521,TCIAColon_0023_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004522,TCIAColon_0259_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004523,PETCT_9abb9583ec,autoPET,unknown,unknown,unknown
+BDMAP_00004524,TCIAColon_0191_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004525,liver_162,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004526,PETCT_6016a6c3af,autoPET,unknown,unknown,unknown
+BDMAP_00004527,PETCT_cb1f5e74ab,autoPET,unknown,unknown,unknown
+BDMAP_00004528,LDCT-L220_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00004529,liver_49,LiTS,unhealthy,unknown,unknown
+BDMAP_00004530,PETCT_3d8b79d739,autoPET,unknown,unknown,unknown
+BDMAP_00004531,PETCT_3b2a4af482,autoPET,unknown,unknown,unknown
+BDMAP_00004532,pancreas_460,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004533,hepaticvessel_316,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004534,TCIAColon_0239_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004535,TCIAColon_0280_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004536,amos_0320,AMOS,unknown,unknown,unknown
+BDMAP_00004537,liver_144,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004538,PETCT_59309d6625,autoPET,unknown,unknown,unknown
+BDMAP_00004539,amos_0387,AMOS,unknown,unknown,unknown
+BDMAP_00004540,amos_0307,AMOS,unknown,unknown,unknown
+BDMAP_00004541,pancreas_032,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004542,hepaticvessel_301,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004543,PETCT_ba717a1f22,autoPET,unknown,unknown,unknown
+BDMAP_00004544,TCIAColon_0103_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004545,amos_0131,AMOS,unknown,unknown,unknown
+BDMAP_00004546,pancreas_406,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004547,CPTAC-PDA-C3N-01907_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004548,PETCT_b6a3c72db6,autoPET,unknown,unknown,unknown
+BDMAP_00004549,pancreas_107,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004550,pancreas_300,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004551,case_00032,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004552,case_00468,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004553,Case_00856_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004554,pancreas_489,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004555,TCIAColon_0289_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004556,TCIAColon_0094_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00004557,word_0145,WORD,unknown,unknown,unknown
+BDMAP_00004558,colon_026,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004559,hepaticvessel_306,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004560,word_0025,WORD,unknown,unknown,unknown
+BDMAP_00004561,case_00482,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004562,hepaticvessel_458,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004563,CPTAC-UCEC-C3L-01247_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004564,PETCT_3d6f425a76,autoPET,unknown,unknown,unknown
+BDMAP_00004565,volume-59,CT-ORG,unknown,unknown,unknown
+BDMAP_00004566,hepaticvessel_337,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004567,word_0081,WORD,unknown,unknown,unknown
+BDMAP_00004568,s0708,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004569,pancreas_424,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004570,TCIAColon_0198_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004571,PETCT_86e54ea60a,autoPET,unknown,unknown,unknown
+BDMAP_00004572,s0300,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004573,hepaticvessel_117,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004574,lung_080,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004575,case_00027,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004576,hepaticvessel_246,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004577,hepaticvessel_414,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004578,case_00048,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004579,case_00028,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004580,s0218,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004581,case_00148,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004582,lung_031,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004583,s0483,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004584,TCIAColon_0076_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004585,TCIAColon_0188_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004586,case_00456,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004587,NIH-LYMPH-ABD-053_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004588,NIH-LYMPH-ABD-003_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004589,hepaticvessel_056,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004590,volume-61,CT-ORG,unknown,unknown,unknown
+BDMAP_00004591,s1361,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004592,Case_00053_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004593,PETCT_63508c679d,autoPET,unknown,unknown,unknown
+BDMAP_00004594,img0010,BTCV,healthy,healthy,healthy
+BDMAP_00004595,PETCT_a1bc00ad60,autoPET,unknown,unknown,unknown
+BDMAP_00004596,volume-89,CT-ORG,unknown,unknown,unknown
+BDMAP_00004597,case_00488,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004598,hepaticvessel_118,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004599,s0255,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004600,liver_118,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004601,hepaticvessel_429,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004602,Case_00436_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004603,s0053,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004604,colon_091,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004605,TCIAColon_0002_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004606,TCIAColon_0178_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004607,PETCT_c252d734a0,autoPET,unknown,unknown,unknown
+BDMAP_00004608,case_00183,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004609,case_00088,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004610,s0236,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004611,s0452,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004612,Case_01002_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004613,hepaticvessel_055,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004614,word_0012,WORD,unknown,unknown,unknown
+BDMAP_00004615,colon_124,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004616,case_00001,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004617,PETCT_c16c13211c,autoPET,unknown,unknown,unknown
+BDMAP_00004618,hepaticvessel_412,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004619,amos_0379,AMOS,unknown,unknown,unknown
+BDMAP_00004620,case_00114,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004621,PETCT_6543c58e13,autoPET,unknown,unknown,unknown
+BDMAP_00004622,CPTAC-CCRCC-C3N-00435_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004623,PETCT_9d97ac5d4d,autoPET,unknown,unknown,unknown
+BDMAP_00004624,colon_088,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004625,PETCT_64aff75516,autoPET,unknown,unknown,unknown
+BDMAP_00004626,s0204,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004627,CPTAC-PDA-C3N-02697_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004628,amos_0137,AMOS,unknown,unknown,unknown
+BDMAP_00004629,PETCT_1e43e3d692,autoPET,unknown,unknown,unknown
+BDMAP_00004630,amos_0127,AMOS,unknown,unknown,unknown
+BDMAP_00004631,s1207,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004632,TCIAColon_0257_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004633,CPTAC-CCRCC-C3L-00766_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004634,PETCT_ca16242e89,autoPET,unknown,unknown,unknown
+BDMAP_00004635,TCIAColon_0196_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004636,pancreas_292,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004637,s1386,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004638,PETCT_0ea07b421b,autoPET,unknown,unknown,unknown
+BDMAP_00004639,liver_40,LiTS,unhealthy,unknown,unknown
+BDMAP_00004640,Case_00451_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004641,pancreas_179,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004642,s0788,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004643,hepaticvessel_324,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004644,amos_0067,AMOS,unknown,unknown,unknown
+BDMAP_00004645,case_00148,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004646,TCIAColon_0251_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004647,PETCT_04a4e1c874,autoPET,unknown,unknown,unknown
+BDMAP_00004648,PETCT_a09210d96b,autoPET,unknown,unknown,unknown
+BDMAP_00004649,hepaticvessel_044,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004650,colon_033,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004651,pancreas_102,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004652,case_00099,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004653,s0624,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004654,PETCT_e6f6c84ec5,autoPET,unknown,unknown,unknown
+BDMAP_00004655,FLARE23_Ts_0059_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004656,TCIAColon_0242_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004657,PETCT_2922971d0f,autoPET,unknown,unknown,unknown
+BDMAP_00004658,TCIAColon_0177_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004659,PETCT_7b477e7e0d,autoPET,unknown,unknown,unknown
+BDMAP_00004660,word_0078,WORD,unknown,unknown,unknown
+BDMAP_00004661,TCIAColon_0202_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004662,PETCT_5c35fcbe89,autoPET,unknown,unknown,unknown
+BDMAP_00004663,PETCT_e6a91fef70,autoPET,unknown,unknown,unknown
+BDMAP_00004664,liver_33,LiTS,unhealthy,unknown,unknown
+BDMAP_00004665,LDCT-L299_0_0,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00004666,liver_140,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004667,volume-67,CT-ORG,unknown,unknown,unknown
+BDMAP_00004668,Case_01029_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004669,amos_0296,AMOS,unknown,unknown,unknown
+BDMAP_00004670,TCIAColon_0264_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004671,case_00154,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004672,pancreas_035,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004673,case_00143,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004674,s0334,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004675,PETCT_6a3477cd9a,autoPET,unknown,unknown,unknown
+BDMAP_00004676,colon_045,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004677,PETCT_f603eeceba,autoPET,unknown,unknown,unknown
+BDMAP_00004678,NIH-LYMPH-ABD-078_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004679,case_00267,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004680,hepaticvessel_353,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004681,amos_0072,AMOS,unknown,unknown,unknown
+BDMAP_00004682,case_00021,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004683,hepaticvessel_297,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004684,amos_0025,AMOS,unknown,unknown,unknown
+BDMAP_00004685,hepaticvessel_361,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004686,CPTAC-CCRCC-C3L-01465_0_2,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004687,CPTAC-CCRCC-C3N-00380_0_10,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004688,PETCT_6c469107a0,autoPET,unknown,unknown,unknown
+BDMAP_00004689,Case_00537_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004690,TCIAColon_0273_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004691,word_0101,WORD,unknown,unknown,unknown
+BDMAP_00004692,Case_01031_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004693,CPTAC-CCRCC-C3L-01459_0_1,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004694,hepaticvessel_356,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004695,pancreas_251,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004696,Case_00820_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004697,NIH-LYMPH-MED-010_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004698,Case_01049_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004699,PETCT_e44480b9b8,autoPET,unknown,unknown,unknown
+BDMAP_00004700,PETCT_9c68e484a7,autoPET,unknown,unknown,unknown
+BDMAP_00004701,hepaticvessel_080,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004702,hepaticvessel_135,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004703,PETCT_d69eabbb20,autoPET,unknown,unknown,unknown
+BDMAP_00004704,liver_58,LiTS,unhealthy,unknown,unknown
+BDMAP_00004705,PETCT_5b10c3f524,autoPET,unknown,unknown,unknown
+BDMAP_00004706,PETCT_e207c7a1a4,autoPET,unknown,unknown,unknown
+BDMAP_00004707,word_0082,WORD,unknown,unknown,unknown
+BDMAP_00004708,volume-50,CT-ORG,unknown,unknown,unknown
+BDMAP_00004709,PETCT_5f569fb737,autoPET,unknown,unknown,unknown
+BDMAP_00004710,TCIAColon_0288_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004711,TCIAColon_0194_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004712,case_00039,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004713,s1304,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004714,hepaticvessel_143,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004715,amos_0398,AMOS,unknown,unknown,unknown
+BDMAP_00004716,s1155,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004717,case_00239,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004718,TCIAColon_0089_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00004719,pancreas_005,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004720,NIH-LYMPH-ABD-084_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004721,TCGA-SARC-A5V2_0_1,TCGA-SARC,unknown,unknown,unknown
+BDMAP_00004722,CPTAC-UCEC-C3N-00866_1_4,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004723,TCIAColon_0039_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004724,TCIAColon_0176_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004725,s0499,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004726,PETCT_ac75e49284,autoPET,unknown,unknown,unknown
+BDMAP_00004727,hepaticvessel_446,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004728,TCIAColon_0150_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004729,Case_00959_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004730,PETCT_ed9dca00d2,autoPET,unknown,unknown,unknown
+BDMAP_00004731,PETCT_c16d325d12,autoPET,unknown,unknown,unknown
+BDMAP_00004732,liver_150,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004733,LDCT-L203_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00004734,word_0027,WORD,unknown,unknown,unknown
+BDMAP_00004735,pancreas_051,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004736,CPTAC-PDA-C3N-01166_0_8,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004737,word_0095,WORD,unknown,unknown,unknown
+BDMAP_00004738,case_00056,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004739,pancreas_208,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004740,hepaticvessel_269,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004741,pancreas_182,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004742,PETCT_4c9e7be363,autoPET,unknown,unknown,unknown
+BDMAP_00004743,TCIAColon_0100_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004744,case_00260,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004745,liver_113,LiTS,unhealthy,unknown,unknown
+BDMAP_00004746,case_00061,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004747,PETCT_5cf118ac06,autoPET,unknown,unknown,unknown
+BDMAP_00004748,lung_020,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004749,FLARE23_Ts_0072_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004750,TCIAColon_0201_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004751,hepaticvessel_234,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004752,s0719,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004753,PETCT_0011f3deaf,autoPET,unknown,unknown,unknown
+BDMAP_00004754,word_0126,WORD,unknown,unknown,unknown
+BDMAP_00004755,PETCT_2d70838805,autoPET,unknown,unknown,unknown
+BDMAP_00004756,TCIAColon_0098_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004757,CPTAC-PDA-C3N-01907_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004758,TCIAColon_0164_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004759,case_00075,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004760,TCIAColon_0297_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004761,Case_00829_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004762,TCIAColon_0070_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004763,PETCT_1285b86bea,autoPET,unknown,unknown,unknown
+BDMAP_00004764,colon_106,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004765,TCIAColon_0112_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004766,hepaticvessel_440,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004767,PETCT_75d1080946,autoPET,unknown,unknown,unknown
+BDMAP_00004768,TCGA-BLCA-CU-A3QU_0_1,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00004769,s0628,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004770,pancreas_061,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004771,Case_00211_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004772,PETCT_402c061122,autoPET,unknown,unknown,unknown
+BDMAP_00004773,pancreas_140,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004774,s0019,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004775,case_00568,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004776,PETCT_bbb2df1e31,autoPET,unknown,unknown,unknown
+BDMAP_00004777,pancreas_499,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004778,s0065,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004779,amos_0370,AMOS,unknown,unknown,unknown
+BDMAP_00004780,Case_00720_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004781,hepaticvessel_007,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004782,lung_028,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004783,colon_143,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004784,PETCT_ff39795341,autoPET,unknown,unknown,unknown
+BDMAP_00004785,PETCT_22d07bdc49,autoPET,unknown,unknown,unknown
+BDMAP_00004786,s0619,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004787,PETCT_099b3fd402,autoPET,unknown,unknown,unknown
+BDMAP_00004788,hepaticvessel_014,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004789,FLARE23_Ts_0003_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004790,lung_034,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004791,s0150,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004792,hepaticvessel_028,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004793,pancreas_289,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004794,PETCT_d393ab6c7b,autoPET,unknown,unknown,unknown
+BDMAP_00004795,s0933,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004796,pancreas_414,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004797,liver_185,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004798,pancreas_497,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004799,s0994,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004800,TCIAColon_0134_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004801,CPTAC-PDA-C3N-01382_0_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004802,hepaticvessel_433,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004803,PETCT_182bdeba22,autoPET,unknown,unknown,unknown
+BDMAP_00004804,pancreas_028,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004805,TCIAColon_0233_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004806,pancreas_324,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004807,hepaticvessel_299,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004808,case_00224,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004809,hepaticvessel_145,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004810,s0585,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004811,TCIAColon_0147_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004812,CPTAC-PDA-C3N-01165_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004813,hepaticvessel_451,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004814,PETCT_c7fd7e3e30,autoPET,unknown,unknown,unknown
+BDMAP_00004815,case_00203,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004816,PETCT_36bb0257fc,autoPET,unknown,unknown,unknown
+BDMAP_00004817,case_00156,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004818,s0375,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004819,Case_00866_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004820,lung_074,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004821,Case_00715_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004822,pancreas_260,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004823,Case_01013_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004824,NIH-LYMPH-ABD-061_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00004825,liver_115,LiTS,healthy,unknown,unknown
+BDMAP_00004826,word_0111,WORD,unknown,unknown,unknown
+BDMAP_00004827,s1206,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004828,PETCT_ca9570a0eb,autoPET,unknown,unknown,unknown
+BDMAP_00004829,pancreas_305,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004830,liver_120,LiTS,unhealthy,unknown,unknown
+BDMAP_00004831,s0459,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004832,s1110,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004833,s0959,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004834,case_00279,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004835,hepaticvessel_047,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004836,TCIAColon_0290_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004837,TCIAColon_0181_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00004838,Case_00665_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004839,liver_36,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004840,img0005,BTCV,healthy,healthy,healthy
+BDMAP_00004841,pancreas_210,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004842,hepaticvessel_154,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004843,pancreas_357,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004844,case_00076,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004845,TCIAColon_0041_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00004846,s0516,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004847,pancreas_193,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004848,Case_01008_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004849,PETCT_ca5406d339,autoPET,unknown,unknown,unknown
+BDMAP_00004850,case_00218,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004851,TCGA-STAD-A8DT_0_4,TCGA-STAD,unknown,unknown,unknown
+BDMAP_00004852,TCGA-BLCA-4Z-AA7S_0_3,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00004853,TCIAColon_0183_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004854,Case_00213_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004855,liver_120,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004856,PETCT_18e8b02af3,autoPET,unknown,unknown,unknown
+BDMAP_00004857,Case_01048_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004858,pancreas_129,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004859,PETCT_c517c47bed,autoPET,unknown,unknown,unknown
+BDMAP_00004860,hepaticvessel_156,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004861,TCIAColon_0037_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004862,PETCT_e9be8ec30f,autoPET,unknown,unknown,unknown
+BDMAP_00004863,TCIAColon_0168_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004864,s0529,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004865,TCIAColon_0176_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004866,liver_60,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004867,case_00168,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004868,PETCT_c4a686881e,autoPET,unknown,unknown,unknown
+BDMAP_00004869,volume-94,CT-ORG,unknown,unknown,unknown
+BDMAP_00004870,case_00181,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004871,PETCT_bfd89440db,autoPET,unknown,unknown,unknown
+BDMAP_00004872,TCIAColon_0279_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004873,PETCT_154e94256c,autoPET,unknown,unknown,unknown
+BDMAP_00004874,Case_00023_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004875,TCIAColon_0140_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004876,colon_162,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004877,PETCT_61663450f8,autoPET,unknown,unknown,unknown
+BDMAP_00004878,liver_76,LiTS,unhealthy,unknown,unknown
+BDMAP_00004879,PETCT_21853fc15b,autoPET,unknown,unknown,unknown
+BDMAP_00004880,pancreas_056,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004881,PETCT_af547fa618,autoPET,unknown,unknown,unknown
+BDMAP_00004882,FLARE23_Ts_0071_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004883,s0355,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004884,TCIAColon_0045_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004885,pancreas_344,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004886,case_00109,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004887,case_00213,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004888,liver_44,LiTS,unhealthy,unknown,unknown
+BDMAP_00004889,hepaticvessel_349,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004890,liver_29,LiTS,unhealthy,unknown,unknown
+BDMAP_00004891,CPTAC-PDA-C3N-03039_3_1,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004892,CPTAC-CCRCC-C3N-00380_0_3,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00004893,PETCT_cd2ef932b5,autoPET,unknown,unknown,unknown
+BDMAP_00004894,colon_148,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004895,pancreas_249,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004896,liver_151,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004897,case_00423,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004898,Case_00990_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004899,word_0059,WORD,unknown,unknown,unknown
+BDMAP_00004900,s1111,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004901,case_00250,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004902,TCIAColon_0246_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004903,case_00534,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004904,CPTAC-UCEC-C3L-01247_0_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004905,s1247,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004906,Case_00818_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004907,PETCT_e0aa99fa04,autoPET,unknown,unknown,unknown
+BDMAP_00004908,PETCT_13f476b02b,autoPET,unknown,unknown,unknown
+BDMAP_00004909,Case_00834_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004910,colon_038,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004911,PETCT_e4749cda88,autoPET,unknown,unknown,unknown
+BDMAP_00004912,amos_0116,AMOS,unknown,unknown,unknown
+BDMAP_00004913,img0027,BTCV,healthy,healthy,healthy
+BDMAP_00004914,PETCT_7365362464,autoPET,unknown,unknown,unknown
+BDMAP_00004915,s0141,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004916,s0462,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004917,pancreas_074,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004918,PETCT_ddca6cfba6,autoPET,unknown,unknown,unknown
+BDMAP_00004919,s1124,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004920,Case_00546_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004921,s0835,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004922,case_00458,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004923,CPTAC-PDA-C3N-01375_0_2,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004924,PETCT_3a4be713a1,autoPET,unknown,unknown,unknown
+BDMAP_00004925,case_00206,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004926,CPTAC-UCEC-C3N-00866_0_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004927,pancreas_086,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004928,Case_00792_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004929,CPTAC-UCEC-C3N-00866_3_3,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00004930,hepaticvessel_392,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004931,Case_00538_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004932,PETCT_3708f576ec,autoPET,unknown,unknown,unknown
+BDMAP_00004933,PETCT_a7b323b3fd,autoPET,unknown,unknown,unknown
+BDMAP_00004934,FLARE23_Ts_0025_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004935,s0403,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004936,s1262,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004937,amos_0075,AMOS,unknown,unknown,unknown
+BDMAP_00004938,hepaticvessel_305,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004939,TCIAColon_0106_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00004940,FLARE23_Ts_0054_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004941,amos_0226,AMOS,unknown,unknown,unknown
+BDMAP_00004942,FLARE23_Ts_0012_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004943,liver_87,LiTS,healthy,unknown,unknown
+BDMAP_00004944,TCIAColon_0145_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004945,Case_00542_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004946,TCIAColon_0010_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004947,PETCT_b52920038c,autoPET,unknown,unknown,unknown
+BDMAP_00004948,PETCT_f24f3ce1da,autoPET,unknown,unknown,unknown
+BDMAP_00004949,TCIAColon_0003_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004950,colon_178,MSD-Colon,unknown,unknown,unknown
+BDMAP_00004951,PETCT_b04be2846e,autoPET,unknown,unknown,unknown
+BDMAP_00004952,PETCT_b1d6679284,autoPET,unknown,unknown,unknown
+BDMAP_00004953,24_image,CHAOS,healthy,healthy,healthy
+BDMAP_00004954,pancreas_242,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004955,hepaticvessel_335,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004956,case_00486,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004957,TCIAColon_0075_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004958,TCIAColon_0208_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004959,hepaticvessel_062,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00004960,lung_051,MSD-Lung,unknown,unknown,unknown
+BDMAP_00004961,s0248,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004962,s0362,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004963,TCIAColon_0108_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00004964,pancreas_093,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004965,pancreas_060,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004966,hepaticvessel_170,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004967,Case_01026_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00004968,case_00140,KiTS19,unknown,unknown,unhealthy
+BDMAP_00004969,pancreas_043,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004970,PETCT_f082a3d319,autoPET,unknown,unknown,unknown
+BDMAP_00004971,hepaticvessel_030,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004972,TCIAColon_0156_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00004973,PETCT_8fea5f0537,autoPET,unknown,unknown,unknown
+BDMAP_00004974,hepaticvessel_346,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00004975,PETCT_f8aac0e202,autoPET,unknown,unknown,unknown
+BDMAP_00004976,hepaticvessel_235,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004977,s1131,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004978,PETCT_a2676f03c0,autoPET,unknown,unknown,unknown
+BDMAP_00004979,FLARE23_Ts_0049_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00004980,case_00267,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004981,case_00495,KiTS23,unknown,unknown,unhealthy
+BDMAP_00004982,CPTAC-PDA-C3N-01715_0_4,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00004983,TCIAColon_0142_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00004984,volume-136,CT-ORG,unknown,unknown,unknown
+BDMAP_00004985,s0406,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00004986,PETCT_556b56485a,autoPET,unknown,unknown,unknown
+BDMAP_00004987,liver_139,MSD-Liver,unknown,unknown,unknown
+BDMAP_00004988,pancreas_151,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00004989,PETCT_0fa313309d,autoPET,unknown,unknown,unknown
+BDMAP_00004990,case_00132,KiTS21,unknown,unknown,unhealthy
+BDMAP_00004991,volume-98,CT-ORG,unknown,unknown,unknown
+BDMAP_00004992,pancreas_279,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00004993,hepaticvessel_307,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00004994,PETCT_df2e16771a,autoPET,unknown,unknown,unknown
+BDMAP_00004995,liver_63,LiTS,unhealthy,unknown,unknown
+BDMAP_00004996,spleen_44,MSD-Spleen,unknown,unknown,unknown
+BDMAP_00004997,amos_0403,AMOS,unknown,unknown,unknown
+BDMAP_00004998,liver_31,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00004999,word_0004,WORD,unknown,unknown,unknown
+BDMAP_00005000,volume-125,CT-ORG,unknown,unknown,unknown
+BDMAP_00005001,colon_205,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005002,CPTAC-PDA-C3N-03426_0_5,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00005003,TCIAColon_0249_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00005004,Case_01007_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005005,colon_089,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005006,case_00252,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005007,PETCT_631b419cef,autoPET,unknown,unknown,unknown
+BDMAP_00005008,pancreas_433,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00005009,case_00430,KiTS23,unknown,unknown,unhealthy
+BDMAP_00005010,PETCT_a25083ff81,autoPET,unknown,unknown,unknown
+BDMAP_00005011,hepaticvessel_367,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00005012,colon_004,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005013,word_0141,WORD,unknown,unknown,unknown
+BDMAP_00005014,hepaticvessel_162,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00005015,TCIAColon_0218_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00005016,colon_039,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005017,case_00435,KiTS23,unknown,unknown,unhealthy
+BDMAP_00005018,PETCT_1ac497ed9d,autoPET,unknown,unknown,unknown
+BDMAP_00005019,s0975,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005020,pancreas_274,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005021,NIH-LYMPH-ABD-010_0_0,NIH-Lymph,unknown,unknown,unknown
+BDMAP_00005022,pancreas_138,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005023,LDCT-L221_0_1,TCIA-LDCT,unknown,unknown,unknown
+BDMAP_00005024,Case_00216_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005025,s0408,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005026,TCIAColon_0159_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00005027,PETCT_76ebd5c736,autoPET,unknown,unknown,unknown
+BDMAP_00005028,word_0058,WORD,unknown,unknown,unknown
+BDMAP_00005029,FLARE23_Ts_0069_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00005030,case_00053,KiTS19,unknown,unknown,unhealthy
+BDMAP_00005031,PETCT_dec9ff6a91,autoPET,unknown,unknown,unknown
+BDMAP_00005032,lung_036,MSD-Lung,unknown,unknown,unknown
+BDMAP_00005033,CPTAC-UCEC-C3N-01008_1_7,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00005034,PETCT_62a78a061f,autoPET,unknown,unknown,unknown
+BDMAP_00005035,amos_0197,AMOS,unknown,unknown,unknown
+BDMAP_00005036,s0192,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005037,pancreas_302,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005038,TCGA-OV-61-2614_0_1,TCGA-OV,unknown,unknown,unknown
+BDMAP_00005039,CPTAC-CCRCC-C3L-01465_0_6,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00005040,FLARE23_Ts_0034_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00005041,TCGA-BLCA-4Z-AA82_0_3,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00005042,CPTAC-UCEC-C3N-00866_3_2,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00005043,PETCT_1774857f8e,autoPET,unknown,unknown,unknown
+BDMAP_00005044,word_0008,WORD,unknown,unknown,unknown
+BDMAP_00005045,s0522,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005046,TCGA-BLCA-DK-A1A6_0_3,TCGA-BLCA,unknown,unknown,unknown
+BDMAP_00005047,colon_090,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005048,s0431,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005049,word_0071,WORD,unknown,unknown,unknown
+BDMAP_00005050,amos_0184,AMOS,unknown,unknown,unknown
+BDMAP_00005051,PETCT_c852dfc0a5,autoPET,unknown,unknown,unknown
+BDMAP_00005052,TCIAColon_0126_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00005053,amos_0242,AMOS,unknown,unknown,unknown
+BDMAP_00005054,liver_189,MSD-Liver,unknown,unknown,unknown
+BDMAP_00005055,CPTAC-CCRCC-C3L-01465_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00005056,PETCT_185da4c8b6,autoPET,unknown,unknown,unknown
+BDMAP_00005057,hepaticvessel_318,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00005058,lung_073,MSD-Lung,unknown,unknown,unknown
+BDMAP_00005059,FLARE23_Ts_0056_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00005060,FLARE23_Ts_0075_0000,FLARE23Val,unknown,unknown,unknown
+BDMAP_00005061,PETCT_98cd91d44e,autoPET,unknown,unknown,unknown
+BDMAP_00005062,s0812,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005063,pancreas_264,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005064,pancreas_295,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005065,liver_50,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00005066,PETCT_59e6d1de22,autoPET,unknown,unknown,unknown
+BDMAP_00005067,colon_108,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005068,hepaticvessel_179,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00005069,CPTAC-CCRCC-C3L-01958_0_9,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00005070,pancreas_217,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005071,Case_00815_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005072,s0120,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005073,colon_161,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005074,pancreas_021,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005075,pancreas_380,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005076,TCIAColon_0204_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00005077,case_00207,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005078,pancreas_283,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005079,Case_00249_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005080,hepaticvessel_185,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00005081,case_00439,KiTS23,unknown,unknown,unhealthy
+BDMAP_00005082,hepaticvessel_126,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00005083,liver_1,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00005084,hepaticvessel_149,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00005085,case_00146,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005086,Case_00753_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005087,TCIAColon_0034_0_1,TCIAColon,unknown,unknown,unknown
+BDMAP_00005088,PETCT_0e9a98ecda,autoPET,unknown,unknown,unknown
+BDMAP_00005089,s1379,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005090,hepaticvessel_444,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00005091,PETCT_f11f3d3692,autoPET,unknown,unknown,unknown
+BDMAP_00005092,pancreas_025,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005093,Case_00064_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005094,PETCT_a37c4e231f,autoPET,unknown,unknown,unknown
+BDMAP_00005095,PETCT_07b7e9abfc,autoPET,unknown,unknown,unknown
+BDMAP_00005096,s0038,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005097,liver_4,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00005098,s0764,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005099,case_00433,KiTS23,unknown,unknown,unhealthy
+BDMAP_00005100,PETCT_7ce196485f,autoPET,unknown,unknown,unknown
+BDMAP_00005101,hepaticvessel_174,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00005102,PETCT_48d5467561,autoPET,unknown,unknown,unknown
+BDMAP_00005103,hepaticvessel_073,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00005104,hepaticvessel_232,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00005105,case_00035,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005106,hepaticvessel_209,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00005107,PETCT_4d7b745a7b,autoPET,unknown,unknown,unknown
+BDMAP_00005108,pancreas_278,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005109,pancreas_163,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00005110,PANCREAS_0020,TCIA-Pancreas-CT,unknown,healthy,unknown
+BDMAP_00005111,TCIAColon_0056_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00005112,hepaticvessel_336,MSD-HepaticVessel,unknown,unknown,unknown
+BDMAP_00005113,case_00136,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005114,case_00023,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005115,s0728,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005116,TCIAColon_0109_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00005117,s0797,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005118,Case_00855_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005119,liver_41,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00005120,case_00570,KiTS23,unknown,unknown,unhealthy
+BDMAP_00005121,Case_00721_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005122,amos_0172,AMOS,unknown,unknown,unknown
+BDMAP_00005123,TCIAColon_0014_0_0,TCIAColon,unknown,unknown,unknown
+BDMAP_00005124,hepaticvessel_352,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00005125,CPTAC-CCRCC-C3N-00492_0_4,TCIA-CPTAC-CCRCC,unknown,unknown,unknown
+BDMAP_00005126,s0913,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005127,Case_00673_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005128,PETCT_bacc741e2c,autoPET,unknown,unknown,unknown
+BDMAP_00005129,TCIAColon_0257_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00005130,liver_88,LiTS,unhealthy,unknown,unknown
+BDMAP_00005131,s0578,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005132,hepaticvessel_218,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00005133,TCIAColon_0035_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00005134,PETCT_c018b45a49,autoPET,unknown,unknown,unknown
+BDMAP_00005135,CPTAC-UCEC-C3N-01171_0_8,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00005136,Case_00734_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005137,PETCT_a57bd6b006,autoPET,unknown,unknown,unknown
+BDMAP_00005138,TCIAColon_0085_0_2,TCIAColon,unknown,unknown,unknown
+BDMAP_00005139,liver_15,MSD-Liver,unhealthy,unknown,unknown
+BDMAP_00005140,pancreas_214,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005141,pancreas_169,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005142,img0065,BTCV,healthy,healthy,healthy
+BDMAP_00005143,TCIAColon_0119_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00005144,word_0150,WORD,unknown,unknown,unknown
+BDMAP_00005145,PETCT_dd68a71e0a,autoPET,unknown,unknown,unknown
+BDMAP_00005146,hepaticvessel_166,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00005147,amos_0395,AMOS,unknown,unknown,unknown
+BDMAP_00005148,case_00042,KiTS19,unknown,unknown,unhealthy
+BDMAP_00005149,PETCT_ca89066e44,autoPET,unknown,unknown,unknown
+BDMAP_00005150,case_00284,KiTS19,unknown,unknown,unhealthy
+BDMAP_00005151,case_00474,KiTS23,unknown,unknown,unhealthy
+BDMAP_00005152,case_00137,KiTS19,unknown,unknown,unhealthy
+BDMAP_00005153,pancreas_314,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00005154,case_00244,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005155,pancreas_166,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005156,PETCT_3f5a9f616f,autoPET,unknown,unknown,unknown
+BDMAP_00005157,case_00290,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005158,TCIAColon_0059_0_4,TCIAColon,unknown,unknown,unknown
+BDMAP_00005159,PETCT_44c04dcf65,autoPET,unknown,unknown,unknown
+BDMAP_00005160,colon_144,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005161,hepaticvessel_308,MSD-Hepaticvessel,unknown,unknown,unknown
+BDMAP_00005162,amos_0158,AMOS,unknown,unknown,unknown
+BDMAP_00005163,pancreas_359,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00005164,s0190,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005165,PETCT_36870de2f2,autoPET,unknown,unknown,unknown
+BDMAP_00005166,case_00275,KiTS19,unknown,unknown,unhealthy
+BDMAP_00005167,case_00422,KiTS23,unknown,unknown,unhealthy
+BDMAP_00005168,liver_20,LiTS,unhealthy,unknown,unknown
+BDMAP_00005169,pancreas_172,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005170,colon_154,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005171,case_00067,KiTS19,unknown,unknown,unhealthy
+BDMAP_00005172,PETCT_94986389d4,autoPET,unknown,unknown,unknown
+BDMAP_00005173,Case_00867_0000,AbdomenCT-1K,unknown,unknown,unknown
+BDMAP_00005174,case_00118,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005175,PETCT_caae8d63f0,autoPET,unknown,unknown,unknown
+BDMAP_00005176,s0686,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005177,TCIAColon_0169_0_3,TCIAColon,unknown,unknown,unknown
+BDMAP_00005178,CPTAC-PDA-C3N-02998_0_3,TCIA-CPTAC-PDA,unknown,unknown,unknown
+BDMAP_00005179,hepaticvessel_360,MSD-Hepatic,unknown,unknown,unknown
+BDMAP_00005180,amos_0015,AMOS,unknown,unknown,unknown
+BDMAP_00005181,s1370,TotalSegmentator,unknown,unknown,unknown
+BDMAP_00005182,PETCT_bdd21f5590,autoPET,unknown,unknown,unknown
+BDMAP_00005183,PETCT_7a8a062ed5,autoPET,unknown,unknown,unknown
+BDMAP_00005184,word_0144,WORD,unknown,unknown,unknown
+BDMAP_00005185,pancreas_048,MSD-Pancreas,unknown,unhealthy,unknown
+BDMAP_00005186,liver_34,LiTS,healthy,unknown,unknown
+BDMAP_00005187,pancreas_417,MSD-Pancreas,unknown,unknown,unknown
+BDMAP_00005188,PETCT_11afab3485,autoPET,unknown,unknown,unknown
+BDMAP_00005189,CPTAC-UCEC-C3N-00866_3_1,TCIA-CPTAC-UCEC,unknown,unknown,unknown
+BDMAP_00005190,colon_151,MSD-Colon,unknown,unknown,unknown
+BDMAP_00005191,case_00110,KiTS21,unknown,unknown,unhealthy
+BDMAP_00005192,case_00279,KiTS19,unknown,unknown,unhealthy
+BDMAP_00005193,TCGA-STAD-A8DZ_0_1,TCGA-STAD,unknown,unknown,unknown
+BDMAP_00005194,PETCT_642d6c78d6,autoPET,unknown,unknown,unknown
+BDMAP_00005195,Case_00233_0000,AbdomenCT-1K,unknown,unknown,unknown
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/gen_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/gen_json.py
new file mode 100644
index 0000000000000000000000000000000000000000..02cd2a0c632e0a488f9dd701350bc868f7150013
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/gen_json.py
@@ -0,0 +1,64 @@
+# import os
+# from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p
+# import nibabel as nib
+
+# val_liver = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset016_AbdomenAtlas2.0_base_liver/splits_final.json')[0]['val']
+# val_pancreas = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset017_AbdomenAtlas2.0_base_pancreas/splits_final.json')[0]['val']
+# val_kidney = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset018_AbdomenAtlas2.0_base_kidney/splits_final.json')[0]['val']
+# val_colon = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_colon_bdmap.json')[0]['val']
+# val_eso = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_eso_bdmap.json')[0]['val']
+# val_ute = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus_bdmap.json')[0]['val']
+
+# all_files = os.listdir('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset104_AbdomenAtlas2.0_1102/gt_segmentations')
+# all_files = [i.split('.')[0] for i in all_files]
+# train_liver = list(set(all_files ) - set( val_liver) - set(val_pancreas) - set(val_kidney) - set(val_colon) - set(val_eso) - set(val_ute) )
+# # breakpoint()
+# write_content = []
+
+# valid_train_liver = []
+# for name in train_liver:
+# data = nib.load(os.path.join('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset104_AbdomenAtlas2.0_1102/gt_segmentations', name)).get_fdata()
+# if (data.shape[0]==512 and data.shape[1]==512):
+# valid_train_liver.append(name)
+
+# write_content.append({"train":train_liver, "val":val_liver})
+
+# # breakpoint()
+
+# splits_file = 'splits_final.json'
+# save_json(write_content, splits_file)
+
+import os
+from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p
+import nibabel as nib
+from multiprocessing import Pool, cpu_count
+
+def is_valid_file(name):
+ data = nib.load(os.path.join('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset105_AbdomenAtlas2.0_1106/gt_segmentations', name+'.nii.gz')).get_fdata()
+ return name if (data.shape[0] == 512 and data.shape[1] == 512) else None
+
+def main():
+ val_liver = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset016_AbdomenAtlas2.0_base_liver/splits_final.json')[0]['val']
+ val_pancreas = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset017_AbdomenAtlas2.0_base_pancreas/splits_final.json')[0]['val']
+ val_kidney = load_json('/storage/chenqi/cvpr25/annotated_exp/nnUNet_preprocessed/Dataset018_AbdomenAtlas2.0_base_kidney/splits_final.json')[0]['val']
+ val_colon = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_colon_bdmap.json')[0]['val']
+ val_eso = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_eso_bdmap.json')[0]['val']
+ val_ute = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus_bdmap.json')[0]['val']
+
+ all_files = os.listdir('/storage/chenqi/data/our_data/nnUNet_preprocessed/Dataset105_AbdomenAtlas2.0_1106/gt_segmentations')
+ all_files = [i.split('.')[0] for i in all_files]
+ train_liver = list(set(all_files) - set(val_liver) - set(val_pancreas) - set(val_kidney) - set(val_colon) - set(val_eso) - set(val_ute))
+
+ with Pool(cpu_count()) as pool:
+ valid_train_liver = pool.map(is_valid_file, train_liver)
+
+ valid_train_liver = [name for name in valid_train_liver if name is not None]
+
+ write_content = [{"train": valid_train_liver, "val": val_liver}]
+
+ splits_file = 'splits_final.json'
+ save_json(write_content, splits_file)
+
+if __name__ == "__main__":
+ main()
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/kidney/splits_final.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/kidney/splits_final.json
new file mode 100644
index 0000000000000000000000000000000000000000..02bf33920adba1f196e03e71feac0c0391ea012b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/kidney/splits_final.json
@@ -0,0 +1,999 @@
+[
+ {
+ "train": [
+ "BDMAP_00000442",
+ "BDMAP_00003811",
+ "BDMAP_00002446",
+ "BDMAP_00003456",
+ "BDMAP_00003614",
+ "BDMAP_00004744",
+ "BDMAP_00000037",
+ "BDMAP_00004838",
+ "BDMAP_00003441",
+ "BDMAP_00002933",
+ "BDMAP_00002834",
+ "BDMAP_00003178",
+ "BDMAP_00001413",
+ "BDMAP_00000129",
+ "BDMAP_00003613",
+ "BDMAP_00000516",
+ "BDMAP_00000039",
+ "BDMAP_00000008",
+ "BDMAP_00003032",
+ "BDMAP_00001443",
+ "BDMAP_00004482",
+ "BDMAP_00003300",
+ "BDMAP_00004039",
+ "BDMAP_00002251",
+ "BDMAP_00000626",
+ "BDMAP_00001128",
+ "BDMAP_00004712",
+ "BDMAP_00000159",
+ "BDMAP_00003364",
+ "BDMAP_00002609",
+ "BDMAP_00002511",
+ "BDMAP_00003619",
+ "BDMAP_00000843",
+ "BDMAP_00003337",
+ "BDMAP_00003638",
+ "BDMAP_00003976",
+ "BDMAP_00001654",
+ "BDMAP_00002040",
+ "BDMAP_00001402",
+ "BDMAP_00003183",
+ "BDMAP_00003250",
+ "BDMAP_00001747",
+ "BDMAP_00003083",
+ "BDMAP_00004193",
+ "BDMAP_00001223",
+ "BDMAP_00002198",
+ "BDMAP_00004101",
+ "BDMAP_00002488",
+ "BDMAP_00001283",
+ "BDMAP_00005171",
+ "BDMAP_00002695",
+ "BDMAP_00003072",
+ "BDMAP_00003762",
+ "BDMAP_00000285",
+ "BDMAP_00003143",
+ "BDMAP_00003910",
+ "BDMAP_00002133",
+ "BDMAP_00002440",
+ "BDMAP_00001800",
+ "BDMAP_00003601",
+ "BDMAP_00003531",
+ "BDMAP_00002434",
+ "BDMAP_00001383",
+ "BDMAP_00001619",
+ "BDMAP_00004763",
+ "BDMAP_00002186",
+ "BDMAP_00001391",
+ "BDMAP_00000926",
+ "BDMAP_00005192",
+ "BDMAP_00002711",
+ "BDMAP_00004481",
+ "BDMAP_00004887",
+ "BDMAP_00004467",
+ "BDMAP_00001944",
+ "BDMAP_00003258",
+ "BDMAP_00005174",
+ "BDMAP_00001450",
+ "BDMAP_00004265",
+ "BDMAP_00002363",
+ "BDMAP_00001188",
+ "BDMAP_00002953",
+ "BDMAP_00003816",
+ "BDMAP_00004033",
+ "BDMAP_00001563",
+ "BDMAP_00004420",
+ "BDMAP_00004722",
+ "BDMAP_00002710",
+ "BDMAP_00002417",
+ "BDMAP_00001647",
+ "BDMAP_00001376",
+ "BDMAP_00004693",
+ "BDMAP_00000646",
+ "BDMAP_00003199",
+ "BDMAP_00000382",
+ "BDMAP_00004551",
+ "BDMAP_00002851",
+ "BDMAP_00002407",
+ "BDMAP_00003054",
+ "BDMAP_00004068",
+ "BDMAP_00002065",
+ "BDMAP_00001068",
+ "BDMAP_00000320",
+ "BDMAP_00004074",
+ "BDMAP_00001517",
+ "BDMAP_00000533",
+ "BDMAP_00000751",
+ "BDMAP_00000240",
+ "BDMAP_00000980",
+ "BDMAP_00000868",
+ "BDMAP_00001620",
+ "BDMAP_00002574",
+ "BDMAP_00000161",
+ "BDMAP_00004144",
+ "BDMAP_00000435",
+ "BDMAP_00003615",
+ "BDMAP_00004253",
+ "BDMAP_00001434",
+ "BDMAP_00002570",
+ "BDMAP_00000279",
+ "BDMAP_00004331",
+ "BDMAP_00004339",
+ "BDMAP_00002302",
+ "BDMAP_00003600",
+ "BDMAP_00000687",
+ "BDMAP_00003943",
+ "BDMAP_00000916",
+ "BDMAP_00000867",
+ "BDMAP_00000355",
+ "BDMAP_00001496",
+ "BDMAP_00003682",
+ "BDMAP_00000062",
+ "BDMAP_00004616",
+ "BDMAP_00003193",
+ "BDMAP_00001929",
+ "BDMAP_00001184",
+ "BDMAP_00003861",
+ "BDMAP_00000234",
+ "BDMAP_00001480",
+ "BDMAP_00001378",
+ "BDMAP_00001218",
+ "BDMAP_00000465",
+ "BDMAP_00004679",
+ "BDMAP_00003447",
+ "BDMAP_00000883",
+ "BDMAP_00000699",
+ "BDMAP_00002285",
+ "BDMAP_00000117",
+ "BDMAP_00000428",
+ "BDMAP_00002111",
+ "BDMAP_00001998",
+ "BDMAP_00004102",
+ "BDMAP_00000359",
+ "BDMAP_00000356",
+ "BDMAP_00003153",
+ "BDMAP_00001077",
+ "BDMAP_00001607",
+ "BDMAP_00003239",
+ "BDMAP_00000710",
+ "BDMAP_00004671",
+ "BDMAP_00004011",
+ "BDMAP_00005081",
+ "BDMAP_00002012",
+ "BDMAP_00003998",
+ "BDMAP_00004350",
+ "BDMAP_00001020",
+ "BDMAP_00000532",
+ "BDMAP_00000364",
+ "BDMAP_00001614",
+ "BDMAP_00001870",
+ "BDMAP_00001634",
+ "BDMAP_00000662",
+ "BDMAP_00000812",
+ "BDMAP_00002596",
+ "BDMAP_00003200",
+ "BDMAP_00000104",
+ "BDMAP_00003558",
+ "BDMAP_00001027",
+ "BDMAP_00003749",
+ "BDMAP_00000908",
+ "BDMAP_00002698",
+ "BDMAP_00001817",
+ "BDMAP_00000963",
+ "BDMAP_00000423",
+ "BDMAP_00004592",
+ "BDMAP_00002068",
+ "BDMAP_00005154",
+ "BDMAP_00004395",
+ "BDMAP_00000366",
+ "BDMAP_00001518",
+ "BDMAP_00000258",
+ "BDMAP_00002807",
+ "BDMAP_00003281",
+ "BDMAP_00003038",
+ "BDMAP_00002331",
+ "BDMAP_00002433",
+ "BDMAP_00001656",
+ "BDMAP_00000219",
+ "BDMAP_00003701",
+ "BDMAP_00003363",
+ "BDMAP_00003747",
+ "BDMAP_00000137",
+ "BDMAP_00002306",
+ "BDMAP_00005105",
+ "BDMAP_00003207",
+ "BDMAP_00002582",
+ "BDMAP_00000713",
+ "BDMAP_00000353",
+ "BDMAP_00004359",
+ "BDMAP_00002760",
+ "BDMAP_00005006",
+ "BDMAP_00003646",
+ "BDMAP_00001305",
+ "BDMAP_00004311",
+ "BDMAP_00001906",
+ "BDMAP_00002041",
+ "BDMAP_00002404",
+ "BDMAP_00004130",
+ "BDMAP_00002977",
+ "BDMAP_00003146",
+ "BDMAP_00003252",
+ "BDMAP_00002930",
+ "BDMAP_00002484",
+ "BDMAP_00001169",
+ "BDMAP_00003063",
+ "BDMAP_00000889",
+ "BDMAP_00000445",
+ "BDMAP_00003839",
+ "BDMAP_00002322",
+ "BDMAP_00002017",
+ "BDMAP_00004194",
+ "BDMAP_00001677",
+ "BDMAP_00003508",
+ "BDMAP_00003312",
+ "BDMAP_00004327",
+ "BDMAP_00001475",
+ "BDMAP_00003415",
+ "BDMAP_00002718",
+ "BDMAP_00004131",
+ "BDMAP_00004968",
+ "BDMAP_00002864",
+ "BDMAP_00000432",
+ "BDMAP_00000887",
+ "BDMAP_00004195",
+ "BDMAP_00004345",
+ "BDMAP_00002260",
+ "BDMAP_00002707",
+ "BDMAP_00003949",
+ "BDMAP_00001799",
+ "BDMAP_00004368",
+ "BDMAP_00003711",
+ "BDMAP_00001710",
+ "BDMAP_00004150",
+ "BDMAP_00004259",
+ "BDMAP_00004620",
+ "BDMAP_00001636",
+ "BDMAP_00003642",
+ "BDMAP_00000429",
+ "BDMAP_00004682",
+ "BDMAP_00001711",
+ "BDMAP_00002720",
+ "BDMAP_00000616",
+ "BDMAP_00002265",
+ "BDMAP_00002333",
+ "BDMAP_00003603",
+ "BDMAP_00003184",
+ "BDMAP_00005009",
+ "BDMAP_00003039",
+ "BDMAP_00004673",
+ "BDMAP_00003034",
+ "BDMAP_00001633",
+ "BDMAP_00000977",
+ "BDMAP_00001919",
+ "BDMAP_00002084",
+ "BDMAP_00001050",
+ "BDMAP_00004048",
+ "BDMAP_00001721",
+ "BDMAP_00001325",
+ "BDMAP_00001465",
+ "BDMAP_00003073",
+ "BDMAP_00000660",
+ "BDMAP_00003947",
+ "BDMAP_00001089",
+ "BDMAP_00003733",
+ "BDMAP_00004761",
+ "BDMAP_00000331",
+ "BDMAP_00000215",
+ "BDMAP_00005198",
+ "BDMAP_00002340",
+ "BDMAP_00000297",
+ "BDMAP_00002788",
+ "BDMAP_00000414",
+ "BDMAP_00003189",
+ "BDMAP_00002437",
+ "BDMAP_00003516",
+ "BDMAP_00000948",
+ "BDMAP_00003963",
+ "BDMAP_00002940",
+ "BDMAP_00001277",
+ "BDMAP_00001664",
+ "BDMAP_00004014",
+ "BDMAP_00001230",
+ "BDMAP_00004303",
+ "BDMAP_00002951",
+ "BDMAP_00004503",
+ "BDMAP_00004495",
+ "BDMAP_00008388",
+ "BDMAP_00004669",
+ "BDMAP_00001807",
+ "BDMAP_00001273",
+ "BDMAP_00000998",
+ "BDMAP_00003070",
+ "BDMAP_00003823",
+ "BDMAP_00003934",
+ "BDMAP_00000098",
+ "BDMAP_00004347",
+ "BDMAP_00002537",
+ "BDMAP_00001776",
+ "BDMAP_00004487",
+ "BDMAP_00003177",
+ "BDMAP_00005017",
+ "BDMAP_00004597",
+ "BDMAP_00002460",
+ "BDMAP_00001624",
+ "BDMAP_00002928",
+ "BDMAP_00004232",
+ "BDMAP_00004867",
+ "BDMAP_00000122",
+ "BDMAP_00005157",
+ "BDMAP_00003719",
+ "BDMAP_00001941",
+ "BDMAP_00003520",
+ "BDMAP_00002462",
+ "BDMAP_00003713",
+ "BDMAP_00001375",
+ "BDMAP_00005103",
+ "BDMAP_00000377",
+ "BDMAP_00000805",
+ "BDMAP_00003230",
+ "BDMAP_00000241",
+ "BDMAP_00003358",
+ "BDMAP_00002226",
+ "BDMAP_00002396",
+ "BDMAP_00002052",
+ "BDMAP_00000506",
+ "BDMAP_00000742",
+ "BDMAP_00003832",
+ "BDMAP_00000719",
+ "BDMAP_00005114",
+ "BDMAP_00004066",
+ "BDMAP_00003759",
+ "BDMAP_00004316",
+ "BDMAP_00001094",
+ "BDMAP_00000034",
+ "BDMAP_00004407",
+ "BDMAP_00003301",
+ "BDMAP_00000259",
+ "BDMAP_00002087",
+ "BDMAP_00003506",
+ "BDMAP_00002656",
+ "BDMAP_00002981",
+ "BDMAP_00000989",
+ "BDMAP_00002492",
+ "BDMAP_00000309",
+ "BDMAP_00000862",
+ "BDMAP_00005175",
+ "BDMAP_00001796",
+ "BDMAP_00003264",
+ "BDMAP_00000587",
+ "BDMAP_00003448",
+ "BDMAP_00002184",
+ "BDMAP_00001673",
+ "BDMAP_00004209",
+ "BDMAP_00000667",
+ "BDMAP_00001487",
+ "BDMAP_00005165",
+ "BDMAP_00002581",
+ "BDMAP_00004854",
+ "BDMAP_00005030",
+ "BDMAP_00001863",
+ "BDMAP_00003587",
+ "BDMAP_00001396",
+ "BDMAP_00000139",
+ "BDMAP_00003758",
+ "BDMAP_00001676",
+ "BDMAP_00000839",
+ "BDMAP_00002498",
+ "BDMAP_00000574",
+ "BDMAP_00001794",
+ "BDMAP_00003952",
+ "BDMAP_00001513",
+ "BDMAP_00003435",
+ "BDMAP_00004870",
+ "BDMAP_00004686",
+ "BDMAP_00001221",
+ "BDMAP_00003411",
+ "BDMAP_00001757",
+ "BDMAP_00002840",
+ "BDMAP_00000176",
+ "BDMAP_00004557",
+ "BDMAP_00003058",
+ "BDMAP_00003195",
+ "BDMAP_00002421",
+ "BDMAP_00000582",
+ "BDMAP_00004552",
+ "BDMAP_00002067",
+ "BDMAP_00005537",
+ "BDMAP_00003955",
+ "BDMAP_00000569",
+ "BDMAP_00001977",
+ "BDMAP_00001420",
+ "BDMAP_00002948",
+ "BDMAP_00003882",
+ "BDMAP_00000499",
+ "BDMAP_00003240",
+ "BDMAP_00002288",
+ "BDMAP_00005077",
+ "BDMAP_00002833",
+ "BDMAP_00004479",
+ "BDMAP_00002893",
+ "BDMAP_00002993",
+ "BDMAP_00004499",
+ "BDMAP_00000555",
+ "BDMAP_00002751",
+ "BDMAP_00003722",
+ "BDMAP_00001908",
+ "BDMAP_00002638",
+ "BDMAP_00000698",
+ "BDMAP_00003117",
+ "BDMAP_00002326",
+ "BDMAP_00002959",
+ "BDMAP_00000686",
+ "BDMAP_00004454",
+ "BDMAP_00001328",
+ "BDMAP_00002173",
+ "BDMAP_00001035",
+ "BDMAP_00001258",
+ "BDMAP_00002803",
+ "BDMAP_00002292",
+ "BDMAP_00003848",
+ "BDMAP_00004759",
+ "BDMAP_00002122",
+ "BDMAP_00000321",
+ "BDMAP_00001219",
+ "BDMAP_00001995",
+ "BDMAP_00000649",
+ "BDMAP_00005152",
+ "BDMAP_00001045",
+ "BDMAP_00002826",
+ "BDMAP_00001059",
+ "BDMAP_00001254",
+ "BDMAP_00000244",
+ "BDMAP_00004980",
+ "BDMAP_00002906",
+ "BDMAP_00002804",
+ "BDMAP_00001075",
+ "BDMAP_00000968",
+ "BDMAP_00002871",
+ "BDMAP_00001296",
+ "BDMAP_00001931",
+ "BDMAP_00003629",
+ "BDMAP_00004031",
+ "BDMAP_00004901",
+ "BDMAP_00000725",
+ "BDMAP_00003245",
+ "BDMAP_00000788",
+ "BDMAP_00001557",
+ "BDMAP_00001390",
+ "BDMAP_00004652",
+ "BDMAP_00001939",
+ "BDMAP_00000059",
+ "BDMAP_00001242",
+ "BDMAP_00004091",
+ "BDMAP_00004856",
+ "BDMAP_00000329",
+ "BDMAP_00003444",
+ "BDMAP_00003880",
+ "BDMAP_00001707",
+ "BDMAP_00004354",
+ "BDMAP_00001690",
+ "BDMAP_00001684",
+ "BDMAP_00002085",
+ "BDMAP_00003549",
+ "BDMAP_00000518",
+ "BDMAP_00001289",
+ "BDMAP_00004087",
+ "BDMAP_00001768",
+ "BDMAP_00000036",
+ "BDMAP_00004956",
+ "BDMAP_00003491",
+ "BDMAP_00004437",
+ "BDMAP_00004990",
+ "BDMAP_00003957",
+ "BDMAP_00003697",
+ "BDMAP_00003579",
+ "BDMAP_00000434",
+ "BDMAP_00004926",
+ "BDMAP_00002163",
+ "BDMAP_00001126",
+ "BDMAP_00004925",
+ "BDMAP_00000706",
+ "BDMAP_00000368",
+ "BDMAP_00001451",
+ "BDMAP_00002742",
+ "BDMAP_00001612",
+ "BDMAP_00005166",
+ "BDMAP_00002422",
+ "BDMAP_00000452",
+ "BDMAP_00003815",
+ "BDMAP_00004834",
+ "BDMAP_00000053",
+ "BDMAP_00001410",
+ "BDMAP_00000837",
+ "BDMAP_00003704",
+ "BDMAP_00002005",
+ "BDMAP_00001602",
+ "BDMAP_00004633",
+ "BDMAP_00002573",
+ "BDMAP_00000201",
+ "BDMAP_00002942",
+ "BDMAP_00001744",
+ "BDMAP_00002505",
+ "BDMAP_00000376",
+ "BDMAP_00003851",
+ "BDMAP_00001549",
+ "BDMAP_00003973",
+ "BDMAP_00002552",
+ "BDMAP_00002018",
+ "BDMAP_00004260",
+ "BDMAP_00003869",
+ "BDMAP_00004427",
+ "BDMAP_00002273",
+ "BDMAP_00004702",
+ "BDMAP_00003457",
+ "BDMAP_00004181",
+ "BDMAP_00003956",
+ "BDMAP_00001183",
+ "BDMAP_00001703",
+ "BDMAP_00000810",
+ "BDMAP_00002507",
+ "BDMAP_00003930",
+ "BDMAP_00004257",
+ "BDMAP_00001252",
+ "BDMAP_00003984",
+ "BDMAP_00004903",
+ "BDMAP_00002675",
+ "BDMAP_00002431",
+ "BDMAP_00004083",
+ "BDMAP_00005099",
+ "BDMAP_00004581",
+ "BDMAP_00005136",
+ "BDMAP_00003808",
+ "BDMAP_00000066",
+ "BDMAP_00002476",
+ "BDMAP_00005046",
+ "BDMAP_00003721",
+ "BDMAP_00003672",
+ "BDMAP_00000439",
+ "BDMAP_00004216",
+ "BDMAP_00004608",
+ "BDMAP_00004294",
+ "BDMAP_00003736",
+ "BDMAP_00004148",
+ "BDMAP_00001637",
+ "BDMAP_00003666",
+ "BDMAP_00003343",
+ "BDMAP_00004457",
+ "BDMAP_00002884",
+ "BDMAP_00004343",
+ "BDMAP_00004317",
+ "BDMAP_00004717",
+ "BDMAP_00000826",
+ "BDMAP_00004510",
+ "BDMAP_00002776",
+ "BDMAP_00003553",
+ "BDMAP_00000336",
+ "BDMAP_00001268",
+ "BDMAP_00000601",
+ "BDMAP_00003035",
+ "BDMAP_00000924",
+ "BDMAP_00002114",
+ "BDMAP_00003774",
+ "BDMAP_00001104",
+ "BDMAP_00001516",
+ "BDMAP_00002920",
+ "BDMAP_00002410",
+ "BDMAP_00008389",
+ "BDMAP_00000319",
+ "BDMAP_00003392",
+ "BDMAP_00003253",
+ "BDMAP_00002353",
+ "BDMAP_00005167",
+ "BDMAP_00002617",
+ "BDMAP_00002045",
+ "BDMAP_00002524",
+ "BDMAP_00002870",
+ "BDMAP_00003220",
+ "BDMAP_00001079",
+ "BDMAP_00008617",
+ "BDMAP_00002035",
+ "BDMAP_00002579",
+ "BDMAP_00003028",
+ "BDMAP_00000815",
+ "BDMAP_00002806",
+ "BDMAP_00002808",
+ "BDMAP_00002509",
+ "BDMAP_00000985",
+ "BDMAP_00002696",
+ "BDMAP_00003463",
+ "BDMAP_00000233",
+ "BDMAP_00000982",
+ "BDMAP_00004836",
+ "BDMAP_00001408",
+ "BDMAP_00001225",
+ "BDMAP_00000229",
+ "BDMAP_00001001",
+ "BDMAP_00003409",
+ "BDMAP_00002653",
+ "BDMAP_00000102",
+ "BDMAP_00001853",
+ "BDMAP_00002211",
+ "BDMAP_00001340",
+ "BDMAP_00005148",
+ "BDMAP_00002562",
+ "BDMAP_00004771",
+ "BDMAP_00003132",
+ "BDMAP_00000604",
+ "BDMAP_00003294",
+ "BDMAP_00003315",
+ "BDMAP_00002164",
+ "BDMAP_00001064",
+ "BDMAP_00004605",
+ "BDMAP_00004268",
+ "BDMAP_00001851",
+ "BDMAP_00001161",
+ "BDMAP_00004630",
+ "BDMAP_00000936",
+ "BDMAP_00002487",
+ "BDMAP_00004561",
+ "BDMAP_00004328",
+ "BDMAP_00005113",
+ "BDMAP_00003051",
+ "BDMAP_00000987",
+ "BDMAP_00005162",
+ "BDMAP_00005085",
+ "BDMAP_00003359",
+ "BDMAP_00005151",
+ "BDMAP_00002655",
+ "BDMAP_00003535",
+ "BDMAP_00001947",
+ "BDMAP_00002086",
+ "BDMAP_00004775",
+ "BDMAP_00002022",
+ "BDMAP_00003509",
+ "BDMAP_00000656",
+ "BDMAP_00001878",
+ "BDMAP_00001261",
+ "BDMAP_00004208",
+ "BDMAP_00003530",
+ "BDMAP_00001228",
+ "BDMAP_00000044",
+ "BDMAP_00005399",
+ "BDMAP_00000293",
+ "BDMAP_00003806",
+ "BDMAP_00000489",
+ "BDMAP_00000481",
+ "BDMAP_00002936",
+ "BDMAP_00000724",
+ "BDMAP_00000265",
+ "BDMAP_00002990",
+ "BDMAP_00003994",
+ "BDMAP_00000773",
+ "BDMAP_00002033",
+ "BDMAP_00004397",
+ "BDMAP_00001133",
+ "BDMAP_00004224",
+ "BDMAP_00004211",
+ "BDMAP_00001119",
+ "BDMAP_00004897",
+ "BDMAP_00000090",
+ "BDMAP_00002075",
+ "BDMAP_00000583",
+ "BDMAP_00001740",
+ "BDMAP_00000951",
+ "BDMAP_00000023",
+ "BDMAP_00000756",
+ "BDMAP_00002746",
+ "BDMAP_00000128",
+ "BDMAP_00002558",
+ "BDMAP_00001831",
+ "BDMAP_00004979",
+ "BDMAP_00003727",
+ "BDMAP_00001581",
+ "BDMAP_00001571",
+ "BDMAP_00004981",
+ "BDMAP_00004296",
+ "BDMAP_00000249",
+ "BDMAP_00000935",
+ "BDMAP_00000871",
+ "BDMAP_00001911",
+ "BDMAP_00002787",
+ "BDMAP_00002723",
+ "BDMAP_00000943",
+ "BDMAP_00001826",
+ "BDMAP_00002501",
+ "BDMAP_00001784",
+ "BDMAP_00003197",
+ "BDMAP_00002504",
+ "BDMAP_00001286",
+ "BDMAP_00003735",
+ "BDMAP_00002200",
+ "BDMAP_00003384",
+ "BDMAP_00001520",
+ "BDMAP_00000043",
+ "BDMAP_00004315",
+ "BDMAP_00000836",
+ "BDMAP_00003129",
+ "BDMAP_00000162",
+ "BDMAP_00003996",
+ "BDMAP_00001500",
+ "BDMAP_00000917",
+ "BDMAP_00003493",
+ "BDMAP_00002319",
+ "BDMAP_00001411",
+ "BDMAP_00004108",
+ "BDMAP_00002426",
+ "BDMAP_00004850",
+ "BDMAP_00005191",
+ "BDMAP_00001483",
+ "BDMAP_00002665",
+ "BDMAP_00001275",
+ "BDMAP_00001239",
+ "BDMAP_00004627",
+ "BDMAP_00004579",
+ "BDMAP_00004928",
+ "BDMAP_00003959",
+ "BDMAP_00001444",
+ "BDMAP_00003514",
+ "BDMAP_00001370",
+ "BDMAP_00001457",
+ "BDMAP_00000210",
+ "BDMAP_00003923",
+ "BDMAP_00001772",
+ "BDMAP_00002571",
+ "BDMAP_00002991",
+ "BDMAP_00000844",
+ "BDMAP_00001533",
+ "BDMAP_00002361",
+ "BDMAP_00003777",
+ "BDMAP_00001918",
+ "BDMAP_00001138",
+ "BDMAP_00001130",
+ "BDMAP_00001285",
+ "BDMAP_00003128",
+ "BDMAP_00002518",
+ "BDMAP_00002057",
+ "BDMAP_00004808",
+ "BDMAP_00002263",
+ "BDMAP_00003608",
+ "BDMAP_00003581",
+ "BDMAP_00000475",
+ "BDMAP_00004886",
+ "BDMAP_00000562",
+ "BDMAP_00004528",
+ "BDMAP_00004012",
+ "BDMAP_00004175",
+ "BDMAP_00003422",
+ "BDMAP_00001530",
+ "BDMAP_00001635",
+ "BDMAP_00005150",
+ "BDMAP_00003484",
+ "BDMAP_00003461",
+ "BDMAP_00004923",
+ "BDMAP_00003335",
+ "BDMAP_00001109",
+ "BDMAP_00001256",
+ "BDMAP_00004817",
+ "BDMAP_00000033",
+ "BDMAP_00003717",
+ "BDMAP_00003841",
+ "BDMAP_00002902",
+ "BDMAP_00001193",
+ "BDMAP_00000449",
+ "BDMAP_00001238",
+ "BDMAP_00001522",
+ "BDMAP_00002146",
+ "BDMAP_00004586",
+ "BDMAP_00003087",
+ "BDMAP_00002043",
+ "BDMAP_00000149",
+ "BDMAP_00001752",
+ "BDMAP_00000902",
+ "BDMAP_00003849",
+ "BDMAP_00003928",
+ "BDMAP_00004922",
+ "BDMAP_00000557",
+ "BDMAP_00002854",
+ "BDMAP_00003381",
+ "BDMAP_00000571",
+ "BDMAP_00001562",
+ "BDMAP_00004460",
+ "BDMAP_00004475",
+ "BDMAP_00002472",
+ "BDMAP_00001669",
+ "BDMAP_00002929",
+ "BDMAP_00001553",
+ "BDMAP_00003324",
+ "BDMAP_00003256",
+ "BDMAP_00003455",
+ "BDMAP_00003767",
+ "BDMAP_00001839",
+ "BDMAP_00001705",
+ "BDMAP_00000540",
+ "BDMAP_00001540",
+ "BDMAP_00002661",
+ "BDMAP_00002677",
+ "BDMAP_00001987",
+ "BDMAP_00000245",
+ "BDMAP_00003425",
+ "BDMAP_00003740",
+ "BDMAP_00004414",
+ "BDMAP_00002626",
+ "BDMAP_00004738",
+ "BDMAP_00001869",
+ "BDMAP_00004815",
+ "BDMAP_00000327",
+ "BDMAP_00004212",
+ "BDMAP_00003656",
+ "BDMAP_00001456",
+ "BDMAP_00001511",
+ "BDMAP_00004030",
+ "BDMAP_00000834",
+ "BDMAP_00001335",
+ "BDMAP_00004065",
+ "BDMAP_00000160",
+ "BDMAP_00001568",
+ "BDMAP_00001892",
+ "BDMAP_00002347",
+ "BDMAP_00003121",
+ "BDMAP_00003019",
+ "BDMAP_00003895",
+ "BDMAP_00004093",
+ "BDMAP_00002060",
+ "BDMAP_00003576",
+ "BDMAP_00003248",
+ "BDMAP_00001246",
+ "BDMAP_00001877",
+ "BDMAP_00004146",
+ "BDMAP_00004278",
+ "BDMAP_00003219",
+ "BDMAP_00004104",
+ "BDMAP_00004349",
+ "BDMAP_00001117",
+ "BDMAP_00002383",
+ "BDMAP_00005120",
+ "BDMAP_00001023",
+ "BDMAP_00003429",
+ "BDMAP_00003752",
+ "BDMAP_00001782",
+ "BDMAP_00002873",
+ "BDMAP_00000469",
+ "BDMAP_00001777",
+ "BDMAP_00000263",
+ "BDMAP_00003694",
+ "BDMAP_00002545",
+ "BDMAP_00002931",
+ "BDMAP_00002713",
+ "BDMAP_00004737",
+ "BDMAP_00001791",
+ "BDMAP_00001749",
+ "BDMAP_00004489",
+ "BDMAP_00000602",
+ "BDMAP_00001868",
+ "BDMAP_00004780",
+ "BDMAP_00002448",
+ "BDMAP_00001281",
+ "BDMAP_00002762",
+ "BDMAP_00004727",
+ "BDMAP_00003255",
+ "BDMAP_00004373",
+ "BDMAP_00003203",
+ "BDMAP_00000923",
+ "BDMAP_00001731",
+ "BDMAP_00003158",
+ "BDMAP_00002394",
+ "BDMAP_00002166",
+ "BDMAP_00002358",
+ "BDMAP_00000567",
+ "BDMAP_00002481",
+ "BDMAP_00002673",
+ "BDMAP_00001251",
+ "BDMAP_00001107",
+ "BDMAP_00002496",
+ "BDMAP_00004645",
+ "BDMAP_00002966",
+ "BDMAP_00002310",
+ "BDMAP_00001896",
+ "BDMAP_00001359",
+ "BDMAP_00002403",
+ "BDMAP_00003059",
+ "BDMAP_00004746",
+ "BDMAP_00002716",
+ "BDMAP_00003152",
+ "BDMAP_00001380",
+ "BDMAP_00000927",
+ "BDMAP_00001891",
+ "BDMAP_00001351",
+ "BDMAP_00004389",
+ "BDMAP_00003833",
+ "BDMAP_00003024",
+ "BDMAP_00001265",
+ "BDMAP_00000505",
+ "BDMAP_00002881",
+ "BDMAP_00000167",
+ "BDMAP_00003406",
+ "BDMAP_00003206",
+ "BDMAP_00002992",
+ "BDMAP_00002546",
+ "BDMAP_00002471",
+ "BDMAP_00003580",
+ "BDMAP_00002708",
+ "BDMAP_00002943",
+ "BDMAP_00001324",
+ "BDMAP_00001422",
+ "BDMAP_00001679",
+ "BDMAP_00000310",
+ "BDMAP_00006181",
+ "BDMAP_00001012",
+ "BDMAP_00001913",
+ "BDMAP_00003190",
+ "BDMAP_00003202",
+ "BDMAP_00004772",
+ "BDMAP_00001840",
+ "BDMAP_00001867",
+ "BDMAP_00003225",
+ "BDMAP_00002728",
+ "BDMAP_00002091",
+ "BDMAP_00000653",
+ "BDMAP_00003194",
+ "BDMAP_00004154",
+ "BDMAP_00001222",
+ "BDMAP_00003465",
+ "BDMAP_00004609",
+ "BDMAP_00002381",
+ "BDMAP_00004027",
+ "BDMAP_00002798",
+ "BDMAP_00001474",
+ "BDMAP_00003971",
+ "BDMAP_00002066",
+ "BDMAP_00002689",
+ "BDMAP_00001945",
+ "BDMAP_00003746",
+ "BDMAP_00002663",
+ "BDMAP_00002592",
+ "BDMAP_00001536",
+ "BDMAP_00002099",
+ "BDMAP_00002354",
+ "BDMAP_00002243",
+ "BDMAP_00000304",
+ "BDMAP_00001950",
+ "BDMAP_00004417",
+ "BDMAP_00004575",
+ "BDMAP_00001688",
+ "BDMAP_00004844",
+ "BDMAP_00004158",
+ "BDMAP_00000803",
+ "BDMAP_00002889",
+ "BDMAP_00003529"
+ ],
+ "val": [
+ "BDMAP_00000487",
+ "BDMAP_00002631",
+ "BDMAP_00002744",
+ "BDMAP_00000833",
+ "BDMAP_00002648",
+ "BDMAP_00000375",
+ "BDMAP_00000608",
+ "BDMAP_00001352",
+ "BDMAP_00002775",
+ "BDMAP_00002474",
+ "BDMAP_00000458",
+ "BDMAP_00000511",
+ "BDMAP_00003150",
+ "BDMAP_00000794",
+ "BDMAP_00001255",
+ "BDMAP_00002242",
+ "BDMAP_00003205",
+ "BDMAP_00002181",
+ "BDMAP_00003486",
+ "BDMAP_00004250",
+ "BDMAP_00002453",
+ "BDMAP_00003164",
+ "BDMAP_00004578",
+ "BDMAP_00001735"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/eval.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/eval.txt
new file mode 100644
index 0000000000000000000000000000000000000000..316828ac6df3bb23f044e2c9606b6bdd0e4a2150
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/eval.txt
@@ -0,0 +1,23 @@
+imagesTr/liver_26.nii.gz labelsTr/liver_26.nii.gz
+imagesTr/liver_129.nii.gz labelsTr/liver_129.nii.gz
+imagesTr/liver_29.nii.gz labelsTr/liver_29.nii.gz
+imagesTr/liver_13.nii.gz labelsTr/liver_13.nii.gz
+imagesTr/liver_66.nii.gz labelsTr/liver_66.nii.gz
+imagesTr/liver_42.nii.gz labelsTr/liver_42.nii.gz
+imagesTr/liver_88.nii.gz labelsTr/liver_88.nii.gz
+imagesTr/liver_73.nii.gz labelsTr/liver_73.nii.gz
+imagesTr/liver_58.nii.gz labelsTr/liver_58.nii.gz
+imagesTr/liver_82.nii.gz labelsTr/liver_82.nii.gz
+imagesTr/liver_98.nii.gz labelsTr/liver_98.nii.gz
+imagesTr/liver_76.nii.gz labelsTr/liver_76.nii.gz
+imagesTr/liver_71.nii.gz labelsTr/liver_71.nii.gz
+imagesTr/liver_112.nii.gz labelsTr/liver_112.nii.gz
+imagesTr/liver_128.nii.gz labelsTr/liver_128.nii.gz
+imagesTr/liver_10.nii.gz labelsTr/liver_10.nii.gz
+imagesTr/liver_22.nii.gz labelsTr/liver_22.nii.gz
+imagesTr/liver_19.nii.gz labelsTr/liver_19.nii.gz
+imagesTr/liver_15.nii.gz labelsTr/liver_15.nii.gz
+imagesTr/liver_97.nii.gz labelsTr/liver_97.nii.gz
+imagesTr/liver_61.nii.gz labelsTr/liver_61.nii.gz
+imagesTr/liver_31.nii.gz labelsTr/liver_31.nii.gz
+imagesTr/liver_86.nii.gz labelsTr/liver_86.nii.gz
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/train.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/train.txt
new file mode 100644
index 0000000000000000000000000000000000000000..78e54c074e7dc999e652658019ee6e9a5559276e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/liver/train.txt
@@ -0,0 +1,95 @@
+imagesTr/liver_95.nii.gz labelsTr/liver_95.nii.gz
+imagesTr/liver_120.nii.gz labelsTr/liver_120.nii.gz
+imagesTr/liver_12.nii.gz labelsTr/liver_12.nii.gz
+imagesTr/liver_100.nii.gz labelsTr/liver_100.nii.gz
+imagesTr/liver_50.nii.gz labelsTr/liver_50.nii.gz
+imagesTr/liver_111.nii.gz labelsTr/liver_111.nii.gz
+imagesTr/liver_110.nii.gz labelsTr/liver_110.nii.gz
+imagesTr/liver_108.nii.gz labelsTr/liver_108.nii.gz
+imagesTr/liver_72.nii.gz labelsTr/liver_72.nii.gz
+imagesTr/liver_2.nii.gz labelsTr/liver_2.nii.gz
+imagesTr/liver_65.nii.gz labelsTr/liver_65.nii.gz
+imagesTr/liver_96.nii.gz labelsTr/liver_96.nii.gz
+imagesTr/liver_81.nii.gz labelsTr/liver_81.nii.gz
+imagesTr/liver_11.nii.gz labelsTr/liver_11.nii.gz
+imagesTr/liver_109.nii.gz labelsTr/liver_109.nii.gz
+imagesTr/liver_24.nii.gz labelsTr/liver_24.nii.gz
+imagesTr/liver_92.nii.gz labelsTr/liver_92.nii.gz
+imagesTr/liver_124.nii.gz labelsTr/liver_124.nii.gz
+imagesTr/liver_103.nii.gz labelsTr/liver_103.nii.gz
+imagesTr/liver_57.nii.gz labelsTr/liver_57.nii.gz
+imagesTr/liver_63.nii.gz labelsTr/liver_63.nii.gz
+imagesTr/liver_20.nii.gz labelsTr/liver_20.nii.gz
+imagesTr/liver_51.nii.gz labelsTr/liver_51.nii.gz
+imagesTr/liver_43.nii.gz labelsTr/liver_43.nii.gz
+imagesTr/liver_90.nii.gz labelsTr/liver_90.nii.gz
+imagesTr/liver_130.nii.gz labelsTr/liver_130.nii.gz
+imagesTr/liver_125.nii.gz labelsTr/liver_125.nii.gz
+imagesTr/liver_28.nii.gz labelsTr/liver_28.nii.gz
+imagesTr/liver_53.nii.gz labelsTr/liver_53.nii.gz
+imagesTr/liver_48.nii.gz labelsTr/liver_48.nii.gz
+imagesTr/liver_69.nii.gz labelsTr/liver_69.nii.gz
+imagesTr/liver_113.nii.gz labelsTr/liver_113.nii.gz
+imagesTr/liver_118.nii.gz labelsTr/liver_118.nii.gz
+imagesTr/liver_84.nii.gz labelsTr/liver_84.nii.gz
+imagesTr/liver_60.nii.gz labelsTr/liver_60.nii.gz
+imagesTr/liver_121.nii.gz labelsTr/liver_121.nii.gz
+imagesTr/liver_18.nii.gz labelsTr/liver_18.nii.gz
+imagesTr/liver_6.nii.gz labelsTr/liver_6.nii.gz
+imagesTr/liver_30.nii.gz labelsTr/liver_30.nii.gz
+imagesTr/liver_0.nii.gz labelsTr/liver_0.nii.gz
+imagesTr/liver_107.nii.gz labelsTr/liver_107.nii.gz
+imagesTr/liver_7.nii.gz labelsTr/liver_7.nii.gz
+imagesTr/liver_27.nii.gz labelsTr/liver_27.nii.gz
+imagesTr/liver_25.nii.gz labelsTr/liver_25.nii.gz
+imagesTr/liver_5.nii.gz labelsTr/liver_5.nii.gz
+imagesTr/liver_49.nii.gz labelsTr/liver_49.nii.gz
+imagesTr/liver_33.nii.gz labelsTr/liver_33.nii.gz
+imagesTr/liver_21.nii.gz labelsTr/liver_21.nii.gz
+imagesTr/liver_94.nii.gz labelsTr/liver_94.nii.gz
+imagesTr/liver_23.nii.gz labelsTr/liver_23.nii.gz
+imagesTr/liver_17.nii.gz labelsTr/liver_17.nii.gz
+imagesTr/liver_44.nii.gz labelsTr/liver_44.nii.gz
+imagesTr/liver_45.nii.gz labelsTr/liver_45.nii.gz
+imagesTr/liver_39.nii.gz labelsTr/liver_39.nii.gz
+imagesTr/liver_56.nii.gz labelsTr/liver_56.nii.gz
+imagesTr/liver_75.nii.gz labelsTr/liver_75.nii.gz
+imagesTr/liver_122.nii.gz labelsTr/liver_122.nii.gz
+imagesTr/liver_9.nii.gz labelsTr/liver_9.nii.gz
+imagesTr/liver_35.nii.gz labelsTr/liver_35.nii.gz
+imagesTr/liver_16.nii.gz labelsTr/liver_16.nii.gz
+imagesTr/liver_36.nii.gz labelsTr/liver_36.nii.gz
+imagesTr/liver_85.nii.gz labelsTr/liver_85.nii.gz
+imagesTr/liver_117.nii.gz labelsTr/liver_117.nii.gz
+imagesTr/liver_78.nii.gz labelsTr/liver_78.nii.gz
+imagesTr/liver_14.nii.gz labelsTr/liver_14.nii.gz
+imagesTr/liver_59.nii.gz labelsTr/liver_59.nii.gz
+imagesTr/liver_4.nii.gz labelsTr/liver_4.nii.gz
+imagesTr/liver_123.nii.gz labelsTr/liver_123.nii.gz
+imagesTr/liver_37.nii.gz labelsTr/liver_37.nii.gz
+imagesTr/liver_55.nii.gz labelsTr/liver_55.nii.gz
+imagesTr/liver_40.nii.gz labelsTr/liver_40.nii.gz
+imagesTr/liver_74.nii.gz labelsTr/liver_74.nii.gz
+imagesTr/liver_101.nii.gz labelsTr/liver_101.nii.gz
+imagesTr/liver_67.nii.gz labelsTr/liver_67.nii.gz
+imagesTr/liver_68.nii.gz labelsTr/liver_68.nii.gz
+imagesTr/liver_127.nii.gz labelsTr/liver_127.nii.gz
+imagesTr/liver_102.nii.gz labelsTr/liver_102.nii.gz
+imagesTr/liver_116.nii.gz labelsTr/liver_116.nii.gz
+imagesTr/liver_54.nii.gz labelsTr/liver_54.nii.gz
+imagesTr/liver_62.nii.gz labelsTr/liver_62.nii.gz
+imagesTr/liver_70.nii.gz labelsTr/liver_70.nii.gz
+imagesTr/liver_104.nii.gz labelsTr/liver_104.nii.gz
+imagesTr/liver_80.nii.gz labelsTr/liver_80.nii.gz
+imagesTr/liver_1.nii.gz labelsTr/liver_1.nii.gz
+imagesTr/liver_8.nii.gz labelsTr/liver_8.nii.gz
+imagesTr/liver_52.nii.gz labelsTr/liver_52.nii.gz
+imagesTr/liver_99.nii.gz labelsTr/liver_99.nii.gz
+imagesTr/liver_3.nii.gz labelsTr/liver_3.nii.gz
+imagesTr/liver_77.nii.gz labelsTr/liver_77.nii.gz
+imagesTr/liver_64.nii.gz labelsTr/liver_64.nii.gz
+imagesTr/liver_93.nii.gz labelsTr/liver_93.nii.gz
+imagesTr/liver_83.nii.gz labelsTr/liver_83.nii.gz
+imagesTr/liver_46.nii.gz labelsTr/liver_46.nii.gz
+imagesTr/liver_79.nii.gz labelsTr/liver_79.nii.gz
+imagesTr/liver_126.nii.gz labelsTr/liver_126.nii.gz
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/pancreas/splits_final.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/pancreas/splits_final.json
new file mode 100644
index 0000000000000000000000000000000000000000..b64da3ca97c3a47ccd27c2b1a38a7365f495dfce
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/pancreas/splits_final.json
@@ -0,0 +1,320 @@
+[
+ {
+ "train": [
+ "BDMAP_00004015",
+ "BDMAP_00000438",
+ "BDMAP_00002815",
+ "BDMAP_00002855",
+ "BDMAP_00000714",
+ "BDMAP_00003438",
+ "BDMAP_00001214",
+ "BDMAP_00005444",
+ "BDMAP_00001584",
+ "BDMAP_00002232",
+ "BDMAP_00002332",
+ "BDMAP_00003525",
+ "BDMAP_00003592",
+ "BDMAP_00000859",
+ "BDMAP_00000338",
+ "BDMAP_00002947",
+ "BDMAP_00000732",
+ "BDMAP_00002244",
+ "BDMAP_00004297",
+ "BDMAP_00004447",
+ "BDMAP_00002313",
+ "BDMAP_00004672",
+ "BDMAP_00004198",
+ "BDMAP_00008525",
+ "BDMAP_00001704",
+ "BDMAP_00001504",
+ "BDMAP_00000589",
+ "BDMAP_00004231",
+ "BDMAP_00005078",
+ "BDMAP_00003900",
+ "BDMAP_00003508",
+ "BDMAP_00005169",
+ "BDMAP_00008526",
+ "BDMAP_00002362",
+ "BDMAP_00004964",
+ "BDMAP_00001565",
+ "BDMAP_00002295",
+ "BDMAP_00003812",
+ "BDMAP_00003254",
+ "BDMAP_00009367",
+ "BDMAP_00000324",
+ "BDMAP_00001096",
+ "BDMAP_00000696",
+ "BDMAP_00000972",
+ "BDMAP_00002216",
+ "BDMAP_00000087",
+ "BDMAP_00000940",
+ "BDMAP_00004106",
+ "BDMAP_00002126",
+ "BDMAP_00001288",
+ "BDMAP_00003479",
+ "BDMAP_00000416",
+ "BDMAP_00000192",
+ "BDMAP_00002076",
+ "BDMAP_00002387",
+ "BDMAP_00002411",
+ "BDMAP_00001441",
+ "BDMAP_00004796",
+ "BDMAP_00004804",
+ "BDMAP_00001836",
+ "BDMAP_00001701",
+ "BDMAP_00006623",
+ "BDMAP_00005185",
+ "BDMAP_00001419",
+ "BDMAP_00003133",
+ "BDMAP_00003781",
+ "BDMAP_00004641",
+ "BDMAP_00002896",
+ "BDMAP_00000093",
+ "BDMAP_00000614",
+ "BDMAP_00000447",
+ "BDMAP_00001912",
+ "BDMAP_00001931",
+ "BDMAP_00002233",
+ "BDMAP_00001921",
+ "BDMAP_00007200",
+ "BDMAP_00001408",
+ "BDMAP_00005022",
+ "BDMAP_00000052",
+ "BDMAP_00004398",
+ "BDMAP_00002688",
+ "BDMAP_00005141",
+ "BDMAP_00002278",
+ "BDMAP_00001521",
+ "BDMAP_00007398",
+ "BDMAP_00004880",
+ "BDMAP_00003889",
+ "BDMAP_00000771",
+ "BDMAP_00003451",
+ "BDMAP_00002237",
+ "BDMAP_00004982",
+ "BDMAP_00000618",
+ "BDMAP_00000956",
+ "BDMAP_00001862",
+ "BDMAP_00002188",
+ "BDMAP_00003822",
+ "BDMAP_00002460",
+ "BDMAP_00002793",
+ "BDMAP_00002120",
+ "BDMAP_00003443",
+ "BDMAP_00003551",
+ "BDMAP_00004077",
+ "BDMAP_00002475",
+ "BDMAP_00000236",
+ "BDMAP_00004229",
+ "BDMAP_00002945",
+ "BDMAP_00003824",
+ "BDMAP_00004549",
+ "BDMAP_00002523",
+ "BDMAP_00006534",
+ "BDMAP_00004735",
+ "BDMAP_00003934",
+ "BDMAP_00004359",
+ "BDMAP_00000541",
+ "BDMAP_00003326",
+ "BDMAP_00004511",
+ "BDMAP_00001590",
+ "BDMAP_00001823",
+ "BDMAP_00000470",
+ "BDMAP_00001828",
+ "BDMAP_00003017",
+ "BDMAP_00002227",
+ "BDMAP_00003347",
+ "BDMAP_00002402",
+ "BDMAP_00004097",
+ "BDMAP_00003853",
+ "BDMAP_00003543",
+ "BDMAP_00003744",
+ "BDMAP_00003400",
+ "BDMAP_00005075",
+ "BDMAP_00002616",
+ "BDMAP_00003244",
+ "BDMAP_00003633",
+ "BDMAP_00002021",
+ "BDMAP_00004773",
+ "BDMAP_00000037",
+ "BDMAP_00002309",
+ "BDMAP_00003356",
+ "BDMAP_00000774",
+ "BDMAP_00005064",
+ "BDMAP_00003385",
+ "BDMAP_00000993",
+ "BDMAP_00005092",
+ "BDMAP_00000715",
+ "BDMAP_00004262",
+ "BDMAP_00004719",
+ "BDMAP_00003168",
+ "BDMAP_00002250",
+ "BDMAP_00004264",
+ "BDMAP_00001632",
+ "BDMAP_00000388",
+ "BDMAP_00004286",
+ "BDMAP_00000154",
+ "BDMAP_00001461",
+ "BDMAP_00000683",
+ "BDMAP_00000309",
+ "BDMAP_00001125",
+ "BDMAP_00001898",
+ "BDMAP_00001845",
+ "BDMAP_00001464",
+ "BDMAP_00003658",
+ "BDMAP_00002844",
+ "BDMAP_00003427",
+ "BDMAP_00004636",
+ "BDMAP_00004129",
+ "BDMAP_00001842",
+ "BDMAP_00001646",
+ "BDMAP_00006043",
+ "BDMAP_00004288",
+ "BDMAP_00003631",
+ "BDMAP_00003440",
+ "BDMAP_00004550",
+ "BDMAP_00005070",
+ "BDMAP_00004829",
+ "BDMAP_00000225",
+ "BDMAP_00004060",
+ "BDMAP_00001092",
+ "BDMAP_00002619",
+ "BDMAP_00000701",
+ "BDMAP_00001247",
+ "BDMAP_00002304",
+ "BDMAP_00008128",
+ "BDMAP_00003376",
+ "BDMAP_00000431",
+ "BDMAP_00004546",
+ "BDMAP_00005898",
+ "BDMAP_00003685",
+ "BDMAP_00004992",
+ "BDMAP_00004954",
+ "BDMAP_00004494",
+ "BDMAP_00001617",
+ "BDMAP_00003886",
+ "BDMAP_00003776",
+ "BDMAP_00000692",
+ "BDMAP_00003840",
+ "BDMAP_00001414",
+ "BDMAP_00003277",
+ "BDMAP_00004969",
+ "BDMAP_00000623",
+ "BDMAP_00004847",
+ "BDMAP_00003590",
+ "BDMAP_00001712",
+ "BDMAP_00004895",
+ "BDMAP_00004651",
+ "BDMAP_00001605",
+ "BDMAP_00004183",
+ "BDMAP_00003918",
+ "BDMAP_00002029",
+ "BDMAP_00001597",
+ "BDMAP_00003612",
+ "BDMAP_00003138",
+ "BDMAP_00000558",
+ "BDMAP_00001905",
+ "BDMAP_00001736",
+ "BDMAP_00005063",
+ "BDMAP_00000391",
+ "BDMAP_00001440",
+ "BDMAP_00003613",
+ "BDMAP_00004841",
+ "BDMAP_00004917",
+ "BDMAP_00003329",
+ "BDMAP_00001331",
+ "BDMAP_00002737",
+ "BDMAP_00000197",
+ "BDMAP_00006472",
+ "BDMAP_00003650",
+ "BDMAP_00003260",
+ "BDMAP_00001564",
+ "BDMAP_00003396",
+ "BDMAP_00001057",
+ "BDMAP_00000462",
+ "BDMAP_00003657",
+ "BDMAP_00002580",
+ "BDMAP_00004541",
+ "BDMAP_00000809",
+ "BDMAP_00004023",
+ "BDMAP_00001637",
+ "BDMAP_00004885",
+ "BDMAP_00004184",
+ "BDMAP_00000855",
+ "BDMAP_00005108",
+ "BDMAP_00003769",
+ "BDMAP_00003215",
+ "BDMAP_00003036",
+ "BDMAP_00002171",
+ "BDMAP_00002298",
+ "BDMAP_00001040",
+ "BDMAP_00001368",
+ "BDMAP_00002758",
+ "BDMAP_00000744",
+ "BDMAP_00006533",
+ "BDMAP_00000542",
+ "BDMAP_00004843",
+ "BDMAP_00001804",
+ "BDMAP_00001806",
+ "BDMAP_00000243",
+ "BDMAP_00009738",
+ "BDMAP_00000882",
+ "BDMAP_00001175",
+ "BDMAP_00005037",
+ "BDMAP_00003319",
+ "BDMAP_00003598",
+ "BDMAP_00002829",
+ "BDMAP_00001754",
+ "BDMAP_00001476",
+ "BDMAP_00000411",
+ "BDMAP_00004514",
+ "BDMAP_00001545",
+ "BDMAP_00004293",
+ "BDMAP_00004927",
+ "BDMAP_00001618",
+ "BDMAP_00002690",
+ "BDMAP_00003130",
+ "BDMAP_00000427",
+ "BDMAP_00003141",
+ "BDMAP_00003483",
+ "BDMAP_00005020",
+ "BDMAP_00001067",
+ "BDMAP_00001523",
+ "BDMAP_00005140",
+ "BDMAP_00002863",
+ "BDMAP_00001649",
+ "BDMAP_00003683",
+ "BDMAP_00002328",
+ "BDMAP_00004295",
+ "BDMAP_00000676",
+ "BDMAP_00001064",
+ "BDMAP_00004793"
+ ],
+ "val": [
+ "BDMAP_00000332",
+ "BDMAP_00004858",
+ "BDMAP_00005155",
+ "BDMAP_00001205",
+ "BDMAP_00004770",
+ "BDMAP_00001361",
+ "BDMAP_00002944",
+ "BDMAP_00003961",
+ "BDMAP_00000430",
+ "BDMAP_00000679",
+ "BDMAP_00003809",
+ "BDMAP_00004115",
+ "BDMAP_00003367",
+ "BDMAP_00002899",
+ "BDMAP_00003771",
+ "BDMAP_00003502",
+ "BDMAP_00001628",
+ "BDMAP_00003884",
+ "BDMAP_00005074",
+ "BDMAP_00003114",
+ "BDMAP_00004741",
+ "BDMAP_00001746",
+ "BDMAP_00002603",
+ "BDMAP_00004128"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final2.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final2.json
new file mode 100644
index 0000000000000000000000000000000000000000..edfc56c1528307820a81411ebf43b8392f23af6e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final2.json
@@ -0,0 +1,1255 @@
+[
+ {
+ "train": [
+ "BDMAP_00000008",
+ "BDMAP_00000023",
+ "BDMAP_00000030",
+ "BDMAP_00000034",
+ "BDMAP_00000036",
+ "BDMAP_00000039",
+ "BDMAP_00000043",
+ "BDMAP_00000044",
+ "BDMAP_00000052",
+ "BDMAP_00000059",
+ "BDMAP_00000062",
+ "BDMAP_00000066",
+ "BDMAP_00000069",
+ "BDMAP_00000084",
+ "BDMAP_00000087",
+ "BDMAP_00000090",
+ "BDMAP_00000091",
+ "BDMAP_00000093",
+ "BDMAP_00000102",
+ "BDMAP_00000104",
+ "BDMAP_00000113",
+ "BDMAP_00000117",
+ "BDMAP_00000122",
+ "BDMAP_00000128",
+ "BDMAP_00000129",
+ "BDMAP_00000132",
+ "BDMAP_00000137",
+ "BDMAP_00000138",
+ "BDMAP_00000139",
+ "BDMAP_00000140",
+ "BDMAP_00000149",
+ "BDMAP_00000152",
+ "BDMAP_00000154",
+ "BDMAP_00000159",
+ "BDMAP_00000161",
+ "BDMAP_00000162",
+ "BDMAP_00000167",
+ "BDMAP_00000176",
+ "BDMAP_00000190",
+ "BDMAP_00000192",
+ "BDMAP_00000197",
+ "BDMAP_00000205",
+ "BDMAP_00000219",
+ "BDMAP_00000225",
+ "BDMAP_00000229",
+ "BDMAP_00000232",
+ "BDMAP_00000233",
+ "BDMAP_00000236",
+ "BDMAP_00000240",
+ "BDMAP_00000241",
+ "BDMAP_00000243",
+ "BDMAP_00000244",
+ "BDMAP_00000245",
+ "BDMAP_00000247",
+ "BDMAP_00000249",
+ "BDMAP_00000259",
+ "BDMAP_00000263",
+ "BDMAP_00000264",
+ "BDMAP_00000273",
+ "BDMAP_00000279",
+ "BDMAP_00000285",
+ "BDMAP_00000297",
+ "BDMAP_00000304",
+ "BDMAP_00000319",
+ "BDMAP_00000320",
+ "BDMAP_00000321",
+ "BDMAP_00000324",
+ "BDMAP_00000329",
+ "BDMAP_00000331",
+ "BDMAP_00000336",
+ "BDMAP_00000338",
+ "BDMAP_00000345",
+ "BDMAP_00000347",
+ "BDMAP_00000353",
+ "BDMAP_00000355",
+ "BDMAP_00000356",
+ "BDMAP_00000359",
+ "BDMAP_00000362",
+ "BDMAP_00000364",
+ "BDMAP_00000366",
+ "BDMAP_00000368",
+ "BDMAP_00000373",
+ "BDMAP_00000388",
+ "BDMAP_00000400",
+ "BDMAP_00000411",
+ "BDMAP_00000413",
+ "BDMAP_00000414",
+ "BDMAP_00000416",
+ "BDMAP_00000427",
+ "BDMAP_00000428",
+ "BDMAP_00000429",
+ "BDMAP_00000431",
+ "BDMAP_00000432",
+ "BDMAP_00000434",
+ "BDMAP_00000435",
+ "BDMAP_00000437",
+ "BDMAP_00000438",
+ "BDMAP_00000439",
+ "BDMAP_00000447",
+ "BDMAP_00000449",
+ "BDMAP_00000452",
+ "BDMAP_00000462",
+ "BDMAP_00000465",
+ "BDMAP_00000469",
+ "BDMAP_00000470",
+ "BDMAP_00000480",
+ "BDMAP_00000481",
+ "BDMAP_00000516",
+ "BDMAP_00000518",
+ "BDMAP_00000532",
+ "BDMAP_00000540",
+ "BDMAP_00000541",
+ "BDMAP_00000542",
+ "BDMAP_00000547",
+ "BDMAP_00000552",
+ "BDMAP_00000555",
+ "BDMAP_00000558",
+ "BDMAP_00000562",
+ "BDMAP_00000567",
+ "BDMAP_00000568",
+ "BDMAP_00000569",
+ "BDMAP_00000571",
+ "BDMAP_00000572",
+ "BDMAP_00000574",
+ "BDMAP_00000582",
+ "BDMAP_00000587",
+ "BDMAP_00000589",
+ "BDMAP_00000604",
+ "BDMAP_00000607",
+ "BDMAP_00000614",
+ "BDMAP_00000616",
+ "BDMAP_00000618",
+ "BDMAP_00000623",
+ "BDMAP_00000626",
+ "BDMAP_00000642",
+ "BDMAP_00000646",
+ "BDMAP_00000649",
+ "BDMAP_00000653",
+ "BDMAP_00000656",
+ "BDMAP_00000660",
+ "BDMAP_00000662",
+ "BDMAP_00000667",
+ "BDMAP_00000671",
+ "BDMAP_00000676",
+ "BDMAP_00000683",
+ "BDMAP_00000687",
+ "BDMAP_00000690",
+ "BDMAP_00000692",
+ "BDMAP_00000696",
+ "BDMAP_00000698",
+ "BDMAP_00000701",
+ "BDMAP_00000706",
+ "BDMAP_00000709",
+ "BDMAP_00000710",
+ "BDMAP_00000713",
+ "BDMAP_00000714",
+ "BDMAP_00000715",
+ "BDMAP_00000716",
+ "BDMAP_00000724",
+ "BDMAP_00000725",
+ "BDMAP_00000751",
+ "BDMAP_00000756",
+ "BDMAP_00000771",
+ "BDMAP_00000773",
+ "BDMAP_00000774",
+ "BDMAP_00000778",
+ "BDMAP_00000788",
+ "BDMAP_00000805",
+ "BDMAP_00000809",
+ "BDMAP_00000810",
+ "BDMAP_00000812",
+ "BDMAP_00000826",
+ "BDMAP_00000827",
+ "BDMAP_00000828",
+ "BDMAP_00000834",
+ "BDMAP_00000836",
+ "BDMAP_00000837",
+ "BDMAP_00000839",
+ "BDMAP_00000843",
+ "BDMAP_00000851",
+ "BDMAP_00000855",
+ "BDMAP_00000859",
+ "BDMAP_00000867",
+ "BDMAP_00000871",
+ "BDMAP_00000873",
+ "BDMAP_00000874",
+ "BDMAP_00000881",
+ "BDMAP_00000882",
+ "BDMAP_00000883",
+ "BDMAP_00000887",
+ "BDMAP_00000889",
+ "BDMAP_00000902",
+ "BDMAP_00000907",
+ "BDMAP_00000913",
+ "BDMAP_00000916",
+ "BDMAP_00000918",
+ "BDMAP_00000923",
+ "BDMAP_00000926",
+ "BDMAP_00000935",
+ "BDMAP_00000936",
+ "BDMAP_00000939",
+ "BDMAP_00000940",
+ "BDMAP_00000941",
+ "BDMAP_00000942",
+ "BDMAP_00000948",
+ "BDMAP_00000956",
+ "BDMAP_00000965",
+ "BDMAP_00000968",
+ "BDMAP_00000971",
+ "BDMAP_00000972",
+ "BDMAP_00000977",
+ "BDMAP_00000980",
+ "BDMAP_00000982",
+ "BDMAP_00000987",
+ "BDMAP_00000989",
+ "BDMAP_00000993",
+ "BDMAP_00000998",
+ "BDMAP_00001001",
+ "BDMAP_00001010",
+ "BDMAP_00001015",
+ "BDMAP_00001020",
+ "BDMAP_00001024",
+ "BDMAP_00001025",
+ "BDMAP_00001027",
+ "BDMAP_00001035",
+ "BDMAP_00001040",
+ "BDMAP_00001045",
+ "BDMAP_00001050",
+ "BDMAP_00001055",
+ "BDMAP_00001057",
+ "BDMAP_00001059",
+ "BDMAP_00001067",
+ "BDMAP_00001068",
+ "BDMAP_00001075",
+ "BDMAP_00001077",
+ "BDMAP_00001078",
+ "BDMAP_00001089",
+ "BDMAP_00001092",
+ "BDMAP_00001093",
+ "BDMAP_00001095",
+ "BDMAP_00001096",
+ "BDMAP_00001102",
+ "BDMAP_00001104",
+ "BDMAP_00001107",
+ "BDMAP_00001109",
+ "BDMAP_00001114",
+ "BDMAP_00001119",
+ "BDMAP_00001122",
+ "BDMAP_00001125",
+ "BDMAP_00001126",
+ "BDMAP_00001128",
+ "BDMAP_00001130",
+ "BDMAP_00001138",
+ "BDMAP_00001161",
+ "BDMAP_00001169",
+ "BDMAP_00001171",
+ "BDMAP_00001175",
+ "BDMAP_00001183",
+ "BDMAP_00001184",
+ "BDMAP_00001185",
+ "BDMAP_00001200",
+ "BDMAP_00001209",
+ "BDMAP_00001212",
+ "BDMAP_00001214",
+ "BDMAP_00001215",
+ "BDMAP_00001218",
+ "BDMAP_00001223",
+ "BDMAP_00001225",
+ "BDMAP_00001230",
+ "BDMAP_00001236",
+ "BDMAP_00001237",
+ "BDMAP_00001238",
+ "BDMAP_00001242",
+ "BDMAP_00001246",
+ "BDMAP_00001247",
+ "BDMAP_00001251",
+ "BDMAP_00001256",
+ "BDMAP_00001258",
+ "BDMAP_00001261",
+ "BDMAP_00001265",
+ "BDMAP_00001268",
+ "BDMAP_00001270",
+ "BDMAP_00001273",
+ "BDMAP_00001275",
+ "BDMAP_00001281",
+ "BDMAP_00001283",
+ "BDMAP_00001286",
+ "BDMAP_00001288",
+ "BDMAP_00001289",
+ "BDMAP_00001296",
+ "BDMAP_00001305",
+ "BDMAP_00001316",
+ "BDMAP_00001324",
+ "BDMAP_00001325",
+ "BDMAP_00001331",
+ "BDMAP_00001333",
+ "BDMAP_00001343",
+ "BDMAP_00001359",
+ "BDMAP_00001362",
+ "BDMAP_00001368",
+ "BDMAP_00001370",
+ "BDMAP_00001376",
+ "BDMAP_00001379",
+ "BDMAP_00001380",
+ "BDMAP_00001383",
+ "BDMAP_00001396",
+ "BDMAP_00001397",
+ "BDMAP_00001410",
+ "BDMAP_00001414",
+ "BDMAP_00001419",
+ "BDMAP_00001420",
+ "BDMAP_00001422",
+ "BDMAP_00001426",
+ "BDMAP_00001434",
+ "BDMAP_00001438",
+ "BDMAP_00001440",
+ "BDMAP_00001441",
+ "BDMAP_00001444",
+ "BDMAP_00001445",
+ "BDMAP_00001456",
+ "BDMAP_00001461",
+ "BDMAP_00001464",
+ "BDMAP_00001465",
+ "BDMAP_00001471",
+ "BDMAP_00001474",
+ "BDMAP_00001475",
+ "BDMAP_00001476",
+ "BDMAP_00001483",
+ "BDMAP_00001487",
+ "BDMAP_00001496",
+ "BDMAP_00001502",
+ "BDMAP_00001504",
+ "BDMAP_00001511",
+ "BDMAP_00001514",
+ "BDMAP_00001516",
+ "BDMAP_00001517",
+ "BDMAP_00001518",
+ "BDMAP_00001520",
+ "BDMAP_00001521",
+ "BDMAP_00001522",
+ "BDMAP_00001523",
+ "BDMAP_00001530",
+ "BDMAP_00001533",
+ "BDMAP_00001539",
+ "BDMAP_00001545",
+ "BDMAP_00001549",
+ "BDMAP_00001557",
+ "BDMAP_00001562",
+ "BDMAP_00001563",
+ "BDMAP_00001564",
+ "BDMAP_00001565",
+ "BDMAP_00001584",
+ "BDMAP_00001590",
+ "BDMAP_00001597",
+ "BDMAP_00001598",
+ "BDMAP_00001602",
+ "BDMAP_00001605",
+ "BDMAP_00001607",
+ "BDMAP_00001612",
+ "BDMAP_00001617",
+ "BDMAP_00001618",
+ "BDMAP_00001620",
+ "BDMAP_00001624",
+ "BDMAP_00001632",
+ "BDMAP_00001635",
+ "BDMAP_00001636",
+ "BDMAP_00001646",
+ "BDMAP_00001647",
+ "BDMAP_00001649",
+ "BDMAP_00001656",
+ "BDMAP_00001664",
+ "BDMAP_00001676",
+ "BDMAP_00001679",
+ "BDMAP_00001688",
+ "BDMAP_00001692",
+ "BDMAP_00001697",
+ "BDMAP_00001699",
+ "BDMAP_00001701",
+ "BDMAP_00001704",
+ "BDMAP_00001705",
+ "BDMAP_00001707",
+ "BDMAP_00001710",
+ "BDMAP_00001711",
+ "BDMAP_00001712",
+ "BDMAP_00001732",
+ "BDMAP_00001736",
+ "BDMAP_00001737",
+ "BDMAP_00001747",
+ "BDMAP_00001752",
+ "BDMAP_00001753",
+ "BDMAP_00001754",
+ "BDMAP_00001757",
+ "BDMAP_00001766",
+ "BDMAP_00001768",
+ "BDMAP_00001769",
+ "BDMAP_00001772",
+ "BDMAP_00001782",
+ "BDMAP_00001784",
+ "BDMAP_00001785",
+ "BDMAP_00001791",
+ "BDMAP_00001794",
+ "BDMAP_00001802",
+ "BDMAP_00001804",
+ "BDMAP_00001806",
+ "BDMAP_00001807",
+ "BDMAP_00001809",
+ "BDMAP_00001810",
+ "BDMAP_00001817",
+ "BDMAP_00001823",
+ "BDMAP_00001826",
+ "BDMAP_00001828",
+ "BDMAP_00001831",
+ "BDMAP_00001834",
+ "BDMAP_00001835",
+ "BDMAP_00001836",
+ "BDMAP_00001842",
+ "BDMAP_00001845",
+ "BDMAP_00001851",
+ "BDMAP_00001853",
+ "BDMAP_00001862",
+ "BDMAP_00001863",
+ "BDMAP_00001865",
+ "BDMAP_00001867",
+ "BDMAP_00001868",
+ "BDMAP_00001875",
+ "BDMAP_00001878",
+ "BDMAP_00001891",
+ "BDMAP_00001892",
+ "BDMAP_00001898",
+ "BDMAP_00001905",
+ "BDMAP_00001906",
+ "BDMAP_00001907",
+ "BDMAP_00001908",
+ "BDMAP_00001911",
+ "BDMAP_00001912",
+ "BDMAP_00001913",
+ "BDMAP_00001917",
+ "BDMAP_00001918",
+ "BDMAP_00001919",
+ "BDMAP_00001921",
+ "BDMAP_00001924",
+ "BDMAP_00001941",
+ "BDMAP_00001945",
+ "BDMAP_00001957",
+ "BDMAP_00001966",
+ "BDMAP_00001977",
+ "BDMAP_00001982",
+ "BDMAP_00001985",
+ "BDMAP_00001987",
+ "BDMAP_00001995",
+ "BDMAP_00002017",
+ "BDMAP_00002021",
+ "BDMAP_00002022",
+ "BDMAP_00002029",
+ "BDMAP_00002035",
+ "BDMAP_00002039",
+ "BDMAP_00002041",
+ "BDMAP_00002055",
+ "BDMAP_00002057",
+ "BDMAP_00002060",
+ "BDMAP_00002065",
+ "BDMAP_00002067",
+ "BDMAP_00002068",
+ "BDMAP_00002075",
+ "BDMAP_00002076",
+ "BDMAP_00002085",
+ "BDMAP_00002087",
+ "BDMAP_00002091",
+ "BDMAP_00002099",
+ "BDMAP_00002103",
+ "BDMAP_00002114",
+ "BDMAP_00002117",
+ "BDMAP_00002120",
+ "BDMAP_00002122",
+ "BDMAP_00002133",
+ "BDMAP_00002147",
+ "BDMAP_00002152",
+ "BDMAP_00002158",
+ "BDMAP_00002163",
+ "BDMAP_00002164",
+ "BDMAP_00002166",
+ "BDMAP_00002167",
+ "BDMAP_00002171",
+ "BDMAP_00002172",
+ "BDMAP_00002173",
+ "BDMAP_00002184",
+ "BDMAP_00002185",
+ "BDMAP_00002188",
+ "BDMAP_00002199",
+ "BDMAP_00002211",
+ "BDMAP_00002216",
+ "BDMAP_00002226",
+ "BDMAP_00002227",
+ "BDMAP_00002230",
+ "BDMAP_00002232",
+ "BDMAP_00002233",
+ "BDMAP_00002237",
+ "BDMAP_00002244",
+ "BDMAP_00002250",
+ "BDMAP_00002251",
+ "BDMAP_00002252",
+ "BDMAP_00002253",
+ "BDMAP_00002260",
+ "BDMAP_00002265",
+ "BDMAP_00002267",
+ "BDMAP_00002271",
+ "BDMAP_00002273",
+ "BDMAP_00002275",
+ "BDMAP_00002278",
+ "BDMAP_00002282",
+ "BDMAP_00002283",
+ "BDMAP_00002288",
+ "BDMAP_00002289",
+ "BDMAP_00002295",
+ "BDMAP_00002298",
+ "BDMAP_00002302",
+ "BDMAP_00002304",
+ "BDMAP_00002305",
+ "BDMAP_00002309",
+ "BDMAP_00002310",
+ "BDMAP_00002313",
+ "BDMAP_00002318",
+ "BDMAP_00002319",
+ "BDMAP_00002326",
+ "BDMAP_00002328",
+ "BDMAP_00002332",
+ "BDMAP_00002333",
+ "BDMAP_00002347",
+ "BDMAP_00002349",
+ "BDMAP_00002354",
+ "BDMAP_00002359",
+ "BDMAP_00002361",
+ "BDMAP_00002362",
+ "BDMAP_00002363",
+ "BDMAP_00002373",
+ "BDMAP_00002383",
+ "BDMAP_00002387",
+ "BDMAP_00002396",
+ "BDMAP_00002401",
+ "BDMAP_00002402",
+ "BDMAP_00002403",
+ "BDMAP_00002404",
+ "BDMAP_00002407",
+ "BDMAP_00002410",
+ "BDMAP_00002411",
+ "BDMAP_00002417",
+ "BDMAP_00002419",
+ "BDMAP_00002421",
+ "BDMAP_00002422",
+ "BDMAP_00002426",
+ "BDMAP_00002433",
+ "BDMAP_00002434",
+ "BDMAP_00002437",
+ "BDMAP_00002440",
+ "BDMAP_00002446",
+ "BDMAP_00002451",
+ "BDMAP_00002458",
+ "BDMAP_00002465",
+ "BDMAP_00002471",
+ "BDMAP_00002472",
+ "BDMAP_00002475",
+ "BDMAP_00002476",
+ "BDMAP_00002479",
+ "BDMAP_00002481",
+ "BDMAP_00002484",
+ "BDMAP_00002485",
+ "BDMAP_00002487",
+ "BDMAP_00002492",
+ "BDMAP_00002495",
+ "BDMAP_00002496",
+ "BDMAP_00002498",
+ "BDMAP_00002501",
+ "BDMAP_00002504",
+ "BDMAP_00002509",
+ "BDMAP_00002511",
+ "BDMAP_00002518",
+ "BDMAP_00002523",
+ "BDMAP_00002524",
+ "BDMAP_00002529",
+ "BDMAP_00002545",
+ "BDMAP_00002552",
+ "BDMAP_00002562",
+ "BDMAP_00002570",
+ "BDMAP_00002571",
+ "BDMAP_00002574",
+ "BDMAP_00002580",
+ "BDMAP_00002582",
+ "BDMAP_00002583",
+ "BDMAP_00002592",
+ "BDMAP_00002598",
+ "BDMAP_00002609",
+ "BDMAP_00002612",
+ "BDMAP_00002616",
+ "BDMAP_00002619",
+ "BDMAP_00002626",
+ "BDMAP_00002638",
+ "BDMAP_00002653",
+ "BDMAP_00002654",
+ "BDMAP_00002655",
+ "BDMAP_00002656",
+ "BDMAP_00002661",
+ "BDMAP_00002663",
+ "BDMAP_00002665",
+ "BDMAP_00002688",
+ "BDMAP_00002689",
+ "BDMAP_00002690",
+ "BDMAP_00002695",
+ "BDMAP_00002696",
+ "BDMAP_00002699",
+ "BDMAP_00002704",
+ "BDMAP_00002707",
+ "BDMAP_00002708",
+ "BDMAP_00002710",
+ "BDMAP_00002712",
+ "BDMAP_00002719",
+ "BDMAP_00002720",
+ "BDMAP_00002728",
+ "BDMAP_00002730",
+ "BDMAP_00002737",
+ "BDMAP_00002739",
+ "BDMAP_00002742",
+ "BDMAP_00002746",
+ "BDMAP_00002748",
+ "BDMAP_00002751",
+ "BDMAP_00002758",
+ "BDMAP_00002760",
+ "BDMAP_00002776",
+ "BDMAP_00002788",
+ "BDMAP_00002791",
+ "BDMAP_00002793",
+ "BDMAP_00002798",
+ "BDMAP_00002803",
+ "BDMAP_00002805",
+ "BDMAP_00002807",
+ "BDMAP_00002815",
+ "BDMAP_00002826",
+ "BDMAP_00002828",
+ "BDMAP_00002829",
+ "BDMAP_00002833",
+ "BDMAP_00002834",
+ "BDMAP_00002841",
+ "BDMAP_00002844",
+ "BDMAP_00002845",
+ "BDMAP_00002846",
+ "BDMAP_00002849",
+ "BDMAP_00002854",
+ "BDMAP_00002855",
+ "BDMAP_00002856",
+ "BDMAP_00002863",
+ "BDMAP_00002870",
+ "BDMAP_00002871",
+ "BDMAP_00002873",
+ "BDMAP_00002875",
+ "BDMAP_00002884",
+ "BDMAP_00002889",
+ "BDMAP_00002893",
+ "BDMAP_00002896",
+ "BDMAP_00002902",
+ "BDMAP_00002906",
+ "BDMAP_00002909",
+ "BDMAP_00002918",
+ "BDMAP_00002920",
+ "BDMAP_00002924",
+ "BDMAP_00002928",
+ "BDMAP_00002930",
+ "BDMAP_00002933",
+ "BDMAP_00002936",
+ "BDMAP_00002940",
+ "BDMAP_00002942",
+ "BDMAP_00002945",
+ "BDMAP_00002947",
+ "BDMAP_00002948",
+ "BDMAP_00002953",
+ "BDMAP_00002959",
+ "BDMAP_00002981",
+ "BDMAP_00002986",
+ "BDMAP_00002990",
+ "BDMAP_00002991",
+ "BDMAP_00002992",
+ "BDMAP_00003002",
+ "BDMAP_00003017",
+ "BDMAP_00003019",
+ "BDMAP_00003031",
+ "BDMAP_00003034",
+ "BDMAP_00003036",
+ "BDMAP_00003052",
+ "BDMAP_00003058",
+ "BDMAP_00003063",
+ "BDMAP_00003070",
+ "BDMAP_00003073",
+ "BDMAP_00003074",
+ "BDMAP_00003109",
+ "BDMAP_00003111",
+ "BDMAP_00003113",
+ "BDMAP_00003128",
+ "BDMAP_00003129",
+ "BDMAP_00003130",
+ "BDMAP_00003133",
+ "BDMAP_00003138",
+ "BDMAP_00003140",
+ "BDMAP_00003141",
+ "BDMAP_00003151",
+ "BDMAP_00003153",
+ "BDMAP_00003168",
+ "BDMAP_00003172",
+ "BDMAP_00003178",
+ "BDMAP_00003183",
+ "BDMAP_00003189",
+ "BDMAP_00003193",
+ "BDMAP_00003194",
+ "BDMAP_00003195",
+ "BDMAP_00003200",
+ "BDMAP_00003202",
+ "BDMAP_00003215",
+ "BDMAP_00003225",
+ "BDMAP_00003236",
+ "BDMAP_00003240",
+ "BDMAP_00003244",
+ "BDMAP_00003245",
+ "BDMAP_00003250",
+ "BDMAP_00003252",
+ "BDMAP_00003254",
+ "BDMAP_00003255",
+ "BDMAP_00003256",
+ "BDMAP_00003268",
+ "BDMAP_00003277",
+ "BDMAP_00003281",
+ "BDMAP_00003287",
+ "BDMAP_00003294",
+ "BDMAP_00003299",
+ "BDMAP_00003300",
+ "BDMAP_00003301",
+ "BDMAP_00003312",
+ "BDMAP_00003315",
+ "BDMAP_00003319",
+ "BDMAP_00003324",
+ "BDMAP_00003326",
+ "BDMAP_00003327",
+ "BDMAP_00003329",
+ "BDMAP_00003330",
+ "BDMAP_00003333",
+ "BDMAP_00003343",
+ "BDMAP_00003347",
+ "BDMAP_00003356",
+ "BDMAP_00003357",
+ "BDMAP_00003358",
+ "BDMAP_00003359",
+ "BDMAP_00003361",
+ "BDMAP_00003363",
+ "BDMAP_00003364",
+ "BDMAP_00003373",
+ "BDMAP_00003376",
+ "BDMAP_00003377",
+ "BDMAP_00003381",
+ "BDMAP_00003384",
+ "BDMAP_00003385",
+ "BDMAP_00003392",
+ "BDMAP_00003396",
+ "BDMAP_00003400",
+ "BDMAP_00003406",
+ "BDMAP_00003409",
+ "BDMAP_00003411",
+ "BDMAP_00003412",
+ "BDMAP_00003422",
+ "BDMAP_00003425",
+ "BDMAP_00003427",
+ "BDMAP_00003435",
+ "BDMAP_00003438",
+ "BDMAP_00003440",
+ "BDMAP_00003441",
+ "BDMAP_00003443",
+ "BDMAP_00003444",
+ "BDMAP_00003447",
+ "BDMAP_00003448",
+ "BDMAP_00003451",
+ "BDMAP_00003455",
+ "BDMAP_00003457",
+ "BDMAP_00003461",
+ "BDMAP_00003465",
+ "BDMAP_00003479",
+ "BDMAP_00003482",
+ "BDMAP_00003483",
+ "BDMAP_00003484",
+ "BDMAP_00003491",
+ "BDMAP_00003493",
+ "BDMAP_00003497",
+ "BDMAP_00003506",
+ "BDMAP_00003510",
+ "BDMAP_00003513",
+ "BDMAP_00003514",
+ "BDMAP_00003516",
+ "BDMAP_00003520",
+ "BDMAP_00003524",
+ "BDMAP_00003525",
+ "BDMAP_00003529",
+ "BDMAP_00003530",
+ "BDMAP_00003531",
+ "BDMAP_00003535",
+ "BDMAP_00003543",
+ "BDMAP_00003549",
+ "BDMAP_00003551",
+ "BDMAP_00003553",
+ "BDMAP_00003556",
+ "BDMAP_00003558",
+ "BDMAP_00003560",
+ "BDMAP_00003564",
+ "BDMAP_00003569",
+ "BDMAP_00003576",
+ "BDMAP_00003580",
+ "BDMAP_00003581",
+ "BDMAP_00003590",
+ "BDMAP_00003592",
+ "BDMAP_00003598",
+ "BDMAP_00003600",
+ "BDMAP_00003603",
+ "BDMAP_00003608",
+ "BDMAP_00003612",
+ "BDMAP_00003614",
+ "BDMAP_00003615",
+ "BDMAP_00003631",
+ "BDMAP_00003633",
+ "BDMAP_00003634",
+ "BDMAP_00003640",
+ "BDMAP_00003650",
+ "BDMAP_00003657",
+ "BDMAP_00003658",
+ "BDMAP_00003664",
+ "BDMAP_00003672",
+ "BDMAP_00003680",
+ "BDMAP_00003683",
+ "BDMAP_00003685",
+ "BDMAP_00003694",
+ "BDMAP_00003701",
+ "BDMAP_00003713",
+ "BDMAP_00003717",
+ "BDMAP_00003721",
+ "BDMAP_00003722",
+ "BDMAP_00003727",
+ "BDMAP_00003735",
+ "BDMAP_00003736",
+ "BDMAP_00003740",
+ "BDMAP_00003744",
+ "BDMAP_00003749",
+ "BDMAP_00003752",
+ "BDMAP_00003759",
+ "BDMAP_00003762",
+ "BDMAP_00003763",
+ "BDMAP_00003767",
+ "BDMAP_00003769",
+ "BDMAP_00003774",
+ "BDMAP_00003776",
+ "BDMAP_00003781",
+ "BDMAP_00003798",
+ "BDMAP_00003806",
+ "BDMAP_00003808",
+ "BDMAP_00003811",
+ "BDMAP_00003812",
+ "BDMAP_00003815",
+ "BDMAP_00003822",
+ "BDMAP_00003823",
+ "BDMAP_00003824",
+ "BDMAP_00003827",
+ "BDMAP_00003832",
+ "BDMAP_00003833",
+ "BDMAP_00003840",
+ "BDMAP_00003847",
+ "BDMAP_00003849",
+ "BDMAP_00003851",
+ "BDMAP_00003853",
+ "BDMAP_00003857",
+ "BDMAP_00003867",
+ "BDMAP_00003869",
+ "BDMAP_00003880",
+ "BDMAP_00003882",
+ "BDMAP_00003886",
+ "BDMAP_00003890",
+ "BDMAP_00003898",
+ "BDMAP_00003900",
+ "BDMAP_00003911",
+ "BDMAP_00003918",
+ "BDMAP_00003920",
+ "BDMAP_00003923",
+ "BDMAP_00003928",
+ "BDMAP_00003930",
+ "BDMAP_00003932",
+ "BDMAP_00003943",
+ "BDMAP_00003946",
+ "BDMAP_00003947",
+ "BDMAP_00003952",
+ "BDMAP_00003955",
+ "BDMAP_00003956",
+ "BDMAP_00003957",
+ "BDMAP_00003963",
+ "BDMAP_00003971",
+ "BDMAP_00003972",
+ "BDMAP_00003973",
+ "BDMAP_00003976",
+ "BDMAP_00003994",
+ "BDMAP_00003996",
+ "BDMAP_00003998",
+ "BDMAP_00004011",
+ "BDMAP_00004014",
+ "BDMAP_00004015",
+ "BDMAP_00004016",
+ "BDMAP_00004017",
+ "BDMAP_00004023",
+ "BDMAP_00004027",
+ "BDMAP_00004028",
+ "BDMAP_00004030",
+ "BDMAP_00004031",
+ "BDMAP_00004033",
+ "BDMAP_00004039",
+ "BDMAP_00004060",
+ "BDMAP_00004065",
+ "BDMAP_00004066",
+ "BDMAP_00004074",
+ "BDMAP_00004077",
+ "BDMAP_00004087",
+ "BDMAP_00004097",
+ "BDMAP_00004101",
+ "BDMAP_00004103",
+ "BDMAP_00004104",
+ "BDMAP_00004106",
+ "BDMAP_00004121",
+ "BDMAP_00004129",
+ "BDMAP_00004130",
+ "BDMAP_00004131",
+ "BDMAP_00004147",
+ "BDMAP_00004148",
+ "BDMAP_00004150",
+ "BDMAP_00004154",
+ "BDMAP_00004158",
+ "BDMAP_00004163",
+ "BDMAP_00004165",
+ "BDMAP_00004175",
+ "BDMAP_00004181",
+ "BDMAP_00004183",
+ "BDMAP_00004184",
+ "BDMAP_00004185",
+ "BDMAP_00004187",
+ "BDMAP_00004195",
+ "BDMAP_00004196",
+ "BDMAP_00004198",
+ "BDMAP_00004199",
+ "BDMAP_00004212",
+ "BDMAP_00004216",
+ "BDMAP_00004228",
+ "BDMAP_00004229",
+ "BDMAP_00004231",
+ "BDMAP_00004232",
+ "BDMAP_00004253",
+ "BDMAP_00004257",
+ "BDMAP_00004262",
+ "BDMAP_00004264",
+ "BDMAP_00004265",
+ "BDMAP_00004278",
+ "BDMAP_00004286",
+ "BDMAP_00004288",
+ "BDMAP_00004293",
+ "BDMAP_00004294",
+ "BDMAP_00004295",
+ "BDMAP_00004296",
+ "BDMAP_00004297",
+ "BDMAP_00004303",
+ "BDMAP_00004304",
+ "BDMAP_00004315",
+ "BDMAP_00004317",
+ "BDMAP_00004327",
+ "BDMAP_00004328",
+ "BDMAP_00004331",
+ "BDMAP_00004343",
+ "BDMAP_00004354",
+ "BDMAP_00004373",
+ "BDMAP_00004374",
+ "BDMAP_00004384",
+ "BDMAP_00004389",
+ "BDMAP_00004395",
+ "BDMAP_00004397",
+ "BDMAP_00004398",
+ "BDMAP_00004407",
+ "BDMAP_00004414",
+ "BDMAP_00004415",
+ "BDMAP_00004416",
+ "BDMAP_00004417",
+ "BDMAP_00004420",
+ "BDMAP_00004427",
+ "BDMAP_00004431",
+ "BDMAP_00004435",
+ "BDMAP_00004437",
+ "BDMAP_00004447",
+ "BDMAP_00004450",
+ "BDMAP_00004457",
+ "BDMAP_00004459",
+ "BDMAP_00004462",
+ "BDMAP_00004467",
+ "BDMAP_00004475",
+ "BDMAP_00004479",
+ "BDMAP_00004481",
+ "BDMAP_00004482",
+ "BDMAP_00004489",
+ "BDMAP_00004491",
+ "BDMAP_00004493",
+ "BDMAP_00004494",
+ "BDMAP_00004495",
+ "BDMAP_00004499",
+ "BDMAP_00004508",
+ "BDMAP_00004509",
+ "BDMAP_00004510",
+ "BDMAP_00004511",
+ "BDMAP_00004514",
+ "BDMAP_00004529",
+ "BDMAP_00004541",
+ "BDMAP_00004546",
+ "BDMAP_00004549",
+ "BDMAP_00004550",
+ "BDMAP_00004552",
+ "BDMAP_00004558",
+ "BDMAP_00004561",
+ "BDMAP_00004575",
+ "BDMAP_00004579",
+ "BDMAP_00004581",
+ "BDMAP_00004586",
+ "BDMAP_00004597",
+ "BDMAP_00004600",
+ "BDMAP_00004604",
+ "BDMAP_00004608",
+ "BDMAP_00004609",
+ "BDMAP_00004615",
+ "BDMAP_00004616",
+ "BDMAP_00004620",
+ "BDMAP_00004624",
+ "BDMAP_00004636",
+ "BDMAP_00004639",
+ "BDMAP_00004641",
+ "BDMAP_00004645",
+ "BDMAP_00004650",
+ "BDMAP_00004651",
+ "BDMAP_00004652",
+ "BDMAP_00004664",
+ "BDMAP_00004671",
+ "BDMAP_00004672",
+ "BDMAP_00004673",
+ "BDMAP_00004676",
+ "BDMAP_00004679",
+ "BDMAP_00004682",
+ "BDMAP_00004712",
+ "BDMAP_00004717",
+ "BDMAP_00004719",
+ "BDMAP_00004735",
+ "BDMAP_00004738",
+ "BDMAP_00004744",
+ "BDMAP_00004745",
+ "BDMAP_00004759",
+ "BDMAP_00004764",
+ "BDMAP_00004773",
+ "BDMAP_00004775",
+ "BDMAP_00004783",
+ "BDMAP_00004793",
+ "BDMAP_00004796",
+ "BDMAP_00004804",
+ "BDMAP_00004808",
+ "BDMAP_00004815",
+ "BDMAP_00004817",
+ "BDMAP_00004825",
+ "BDMAP_00004829",
+ "BDMAP_00004830",
+ "BDMAP_00004834",
+ "BDMAP_00004839",
+ "BDMAP_00004841",
+ "BDMAP_00004843",
+ "BDMAP_00004847",
+ "BDMAP_00004850",
+ "BDMAP_00004855",
+ "BDMAP_00004866",
+ "BDMAP_00004867",
+ "BDMAP_00004870",
+ "BDMAP_00004876",
+ "BDMAP_00004880",
+ "BDMAP_00004885",
+ "BDMAP_00004886",
+ "BDMAP_00004887",
+ "BDMAP_00004888",
+ "BDMAP_00004894",
+ "BDMAP_00004895",
+ "BDMAP_00004897",
+ "BDMAP_00004901",
+ "BDMAP_00004903",
+ "BDMAP_00004910",
+ "BDMAP_00004917",
+ "BDMAP_00004922",
+ "BDMAP_00004925",
+ "BDMAP_00004927",
+ "BDMAP_00004943",
+ "BDMAP_00004954",
+ "BDMAP_00004956",
+ "BDMAP_00004964",
+ "BDMAP_00004968",
+ "BDMAP_00004969",
+ "BDMAP_00004980",
+ "BDMAP_00004981",
+ "BDMAP_00004990",
+ "BDMAP_00004992",
+ "BDMAP_00004995",
+ "BDMAP_00005001",
+ "BDMAP_00005005",
+ "BDMAP_00005006",
+ "BDMAP_00005009",
+ "BDMAP_00005016",
+ "BDMAP_00005017",
+ "BDMAP_00005020",
+ "BDMAP_00005022",
+ "BDMAP_00005037",
+ "BDMAP_00005063",
+ "BDMAP_00005064",
+ "BDMAP_00005065",
+ "BDMAP_00005067",
+ "BDMAP_00005070",
+ "BDMAP_00005073",
+ "BDMAP_00005075",
+ "BDMAP_00005077",
+ "BDMAP_00005078",
+ "BDMAP_00005081",
+ "BDMAP_00005083",
+ "BDMAP_00005085",
+ "BDMAP_00005092",
+ "BDMAP_00005097",
+ "BDMAP_00005099",
+ "BDMAP_00005105",
+ "BDMAP_00005108",
+ "BDMAP_00005113",
+ "BDMAP_00005114",
+ "BDMAP_00005119",
+ "BDMAP_00005120",
+ "BDMAP_00005140",
+ "BDMAP_00005141",
+ "BDMAP_00005148",
+ "BDMAP_00005150",
+ "BDMAP_00005151",
+ "BDMAP_00005152",
+ "BDMAP_00005154",
+ "BDMAP_00005157",
+ "BDMAP_00005160",
+ "BDMAP_00005166",
+ "BDMAP_00005167",
+ "BDMAP_00005168",
+ "BDMAP_00005169",
+ "BDMAP_00005170",
+ "BDMAP_00005174",
+ "BDMAP_00005185",
+ "BDMAP_00005186",
+ "BDMAP_00005191",
+ "BDMAP_00005192"
+ ],
+ "val": [
+ "BDMAP_00000100",
+ "BDMAP_00000101",
+ "BDMAP_00000332",
+ "BDMAP_00000375",
+ "BDMAP_00000430",
+ "BDMAP_00000458",
+ "BDMAP_00000487",
+ "BDMAP_00000505",
+ "BDMAP_00000511",
+ "BDMAP_00000608",
+ "BDMAP_00000615",
+ "BDMAP_00000679",
+ "BDMAP_00000745",
+ "BDMAP_00000794",
+ "BDMAP_00000831",
+ "BDMAP_00000833",
+ "BDMAP_00000921",
+ "BDMAP_00001018",
+ "BDMAP_00001198",
+ "BDMAP_00001205",
+ "BDMAP_00001255",
+ "BDMAP_00001309",
+ "BDMAP_00001352",
+ "BDMAP_00001361",
+ "BDMAP_00001413",
+ "BDMAP_00001628",
+ "BDMAP_00001735",
+ "BDMAP_00001746",
+ "BDMAP_00001786",
+ "BDMAP_00001813",
+ "BDMAP_00001962",
+ "BDMAP_00001981",
+ "BDMAP_00002181",
+ "BDMAP_00002214",
+ "BDMAP_00002242",
+ "BDMAP_00002453",
+ "BDMAP_00002463",
+ "BDMAP_00002474",
+ "BDMAP_00002603",
+ "BDMAP_00002631",
+ "BDMAP_00002648",
+ "BDMAP_00002673",
+ "BDMAP_00002717",
+ "BDMAP_00002744",
+ "BDMAP_00002775",
+ "BDMAP_00002804",
+ "BDMAP_00002840",
+ "BDMAP_00002864",
+ "BDMAP_00002899",
+ "BDMAP_00002931",
+ "BDMAP_00002944",
+ "BDMAP_00002955",
+ "BDMAP_00003083",
+ "BDMAP_00003114",
+ "BDMAP_00003143",
+ "BDMAP_00003150",
+ "BDMAP_00003164",
+ "BDMAP_00003170",
+ "BDMAP_00003205",
+ "BDMAP_00003272",
+ "BDMAP_00003367",
+ "BDMAP_00003439",
+ "BDMAP_00003481",
+ "BDMAP_00003486",
+ "BDMAP_00003502",
+ "BDMAP_00003656",
+ "BDMAP_00003771",
+ "BDMAP_00003809",
+ "BDMAP_00003884",
+ "BDMAP_00003897",
+ "BDMAP_00003961",
+ "BDMAP_00004083",
+ "BDMAP_00004115",
+ "BDMAP_00004117",
+ "BDMAP_00004128",
+ "BDMAP_00004250",
+ "BDMAP_00004281",
+ "BDMAP_00004378",
+ "BDMAP_00004551",
+ "BDMAP_00004578",
+ "BDMAP_00004704",
+ "BDMAP_00004741",
+ "BDMAP_00004746",
+ "BDMAP_00004770",
+ "BDMAP_00004844",
+ "BDMAP_00004858",
+ "BDMAP_00004878",
+ "BDMAP_00004890",
+ "BDMAP_00004998",
+ "BDMAP_00005030",
+ "BDMAP_00005074",
+ "BDMAP_00005130",
+ "BDMAP_00005139",
+ "BDMAP_00005155",
+ "BDMAP_00005171"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all.json
new file mode 100644
index 0000000000000000000000000000000000000000..4949d7adb115020e79dcfbaf81ec0f52873f5a2d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all.json
@@ -0,0 +1,2159 @@
+[
+ {
+ "train": [
+ "BDMAP_00004015",
+ "BDMAP_00000438",
+ "BDMAP_00002815",
+ "BDMAP_00002855",
+ "BDMAP_00000714",
+ "BDMAP_00003438",
+ "BDMAP_00001214",
+ "BDMAP_00005444",
+ "BDMAP_00001584",
+ "BDMAP_00002232",
+ "BDMAP_00002332",
+ "BDMAP_00003525",
+ "BDMAP_00003592",
+ "BDMAP_00000859",
+ "BDMAP_00000338",
+ "BDMAP_00002947",
+ "BDMAP_00000732",
+ "BDMAP_00002244",
+ "BDMAP_00004297",
+ "BDMAP_00004447",
+ "BDMAP_00002313",
+ "BDMAP_00004672",
+ "BDMAP_00004198",
+ "BDMAP_00008525",
+ "BDMAP_00001704",
+ "BDMAP_00001504",
+ "BDMAP_00000589",
+ "BDMAP_00004231",
+ "BDMAP_00005078",
+ "BDMAP_00003900",
+ "BDMAP_00003508",
+ "BDMAP_00005169",
+ "BDMAP_00008526",
+ "BDMAP_00002362",
+ "BDMAP_00004964",
+ "BDMAP_00001565",
+ "BDMAP_00002295",
+ "BDMAP_00003812",
+ "BDMAP_00003254",
+ "BDMAP_00009367",
+ "BDMAP_00000324",
+ "BDMAP_00001096",
+ "BDMAP_00000696",
+ "BDMAP_00000972",
+ "BDMAP_00002216",
+ "BDMAP_00000087",
+ "BDMAP_00000940",
+ "BDMAP_00004106",
+ "BDMAP_00002126",
+ "BDMAP_00001288",
+ "BDMAP_00003479",
+ "BDMAP_00000416",
+ "BDMAP_00000192",
+ "BDMAP_00002076",
+ "BDMAP_00002387",
+ "BDMAP_00002411",
+ "BDMAP_00001441",
+ "BDMAP_00004796",
+ "BDMAP_00004804",
+ "BDMAP_00001836",
+ "BDMAP_00001701",
+ "BDMAP_00006623",
+ "BDMAP_00005185",
+ "BDMAP_00001419",
+ "BDMAP_00003133",
+ "BDMAP_00003781",
+ "BDMAP_00004641",
+ "BDMAP_00002896",
+ "BDMAP_00000093",
+ "BDMAP_00000614",
+ "BDMAP_00000447",
+ "BDMAP_00001912",
+ "BDMAP_00001931",
+ "BDMAP_00002233",
+ "BDMAP_00001921",
+ "BDMAP_00007200",
+ "BDMAP_00001408",
+ "BDMAP_00005022",
+ "BDMAP_00000052",
+ "BDMAP_00004398",
+ "BDMAP_00002688",
+ "BDMAP_00005141",
+ "BDMAP_00002278",
+ "BDMAP_00001521",
+ "BDMAP_00007398",
+ "BDMAP_00004880",
+ "BDMAP_00003889",
+ "BDMAP_00000771",
+ "BDMAP_00003451",
+ "BDMAP_00002237",
+ "BDMAP_00004982",
+ "BDMAP_00000618",
+ "BDMAP_00000956",
+ "BDMAP_00001862",
+ "BDMAP_00002188",
+ "BDMAP_00003822",
+ "BDMAP_00002460",
+ "BDMAP_00002793",
+ "BDMAP_00002120",
+ "BDMAP_00003443",
+ "BDMAP_00003551",
+ "BDMAP_00004077",
+ "BDMAP_00002475",
+ "BDMAP_00000236",
+ "BDMAP_00004229",
+ "BDMAP_00002945",
+ "BDMAP_00003824",
+ "BDMAP_00004549",
+ "BDMAP_00002523",
+ "BDMAP_00006534",
+ "BDMAP_00004735",
+ "BDMAP_00003934",
+ "BDMAP_00004359",
+ "BDMAP_00000541",
+ "BDMAP_00003326",
+ "BDMAP_00004511",
+ "BDMAP_00001590",
+ "BDMAP_00001823",
+ "BDMAP_00000470",
+ "BDMAP_00001828",
+ "BDMAP_00003017",
+ "BDMAP_00002227",
+ "BDMAP_00003347",
+ "BDMAP_00002402",
+ "BDMAP_00004097",
+ "BDMAP_00003853",
+ "BDMAP_00003543",
+ "BDMAP_00003744",
+ "BDMAP_00003400",
+ "BDMAP_00005075",
+ "BDMAP_00002616",
+ "BDMAP_00003244",
+ "BDMAP_00003633",
+ "BDMAP_00002021",
+ "BDMAP_00004773",
+ "BDMAP_00000037",
+ "BDMAP_00002309",
+ "BDMAP_00003356",
+ "BDMAP_00000774",
+ "BDMAP_00005064",
+ "BDMAP_00003385",
+ "BDMAP_00000993",
+ "BDMAP_00005092",
+ "BDMAP_00000715",
+ "BDMAP_00004262",
+ "BDMAP_00004719",
+ "BDMAP_00003168",
+ "BDMAP_00002250",
+ "BDMAP_00004264",
+ "BDMAP_00001632",
+ "BDMAP_00000388",
+ "BDMAP_00004286",
+ "BDMAP_00000154",
+ "BDMAP_00001461",
+ "BDMAP_00000683",
+ "BDMAP_00000309",
+ "BDMAP_00001125",
+ "BDMAP_00001898",
+ "BDMAP_00001845",
+ "BDMAP_00001464",
+ "BDMAP_00003658",
+ "BDMAP_00002844",
+ "BDMAP_00003427",
+ "BDMAP_00004636",
+ "BDMAP_00004129",
+ "BDMAP_00001842",
+ "BDMAP_00001646",
+ "BDMAP_00006043",
+ "BDMAP_00004288",
+ "BDMAP_00003631",
+ "BDMAP_00003440",
+ "BDMAP_00004550",
+ "BDMAP_00005070",
+ "BDMAP_00004829",
+ "BDMAP_00000225",
+ "BDMAP_00004060",
+ "BDMAP_00001092",
+ "BDMAP_00002619",
+ "BDMAP_00000701",
+ "BDMAP_00001247",
+ "BDMAP_00002304",
+ "BDMAP_00008128",
+ "BDMAP_00003376",
+ "BDMAP_00000431",
+ "BDMAP_00004546",
+ "BDMAP_00005898",
+ "BDMAP_00003685",
+ "BDMAP_00004992",
+ "BDMAP_00004954",
+ "BDMAP_00004494",
+ "BDMAP_00001617",
+ "BDMAP_00003886",
+ "BDMAP_00003776",
+ "BDMAP_00000692",
+ "BDMAP_00003840",
+ "BDMAP_00001414",
+ "BDMAP_00003277",
+ "BDMAP_00004969",
+ "BDMAP_00000623",
+ "BDMAP_00004847",
+ "BDMAP_00003590",
+ "BDMAP_00001712",
+ "BDMAP_00004895",
+ "BDMAP_00004651",
+ "BDMAP_00001605",
+ "BDMAP_00004183",
+ "BDMAP_00003918",
+ "BDMAP_00002029",
+ "BDMAP_00001597",
+ "BDMAP_00003612",
+ "BDMAP_00003138",
+ "BDMAP_00000558",
+ "BDMAP_00001905",
+ "BDMAP_00001736",
+ "BDMAP_00005063",
+ "BDMAP_00000391",
+ "BDMAP_00001440",
+ "BDMAP_00003613",
+ "BDMAP_00004841",
+ "BDMAP_00004917",
+ "BDMAP_00003329",
+ "BDMAP_00001331",
+ "BDMAP_00002737",
+ "BDMAP_00000197",
+ "BDMAP_00006472",
+ "BDMAP_00003650",
+ "BDMAP_00003260",
+ "BDMAP_00001564",
+ "BDMAP_00003396",
+ "BDMAP_00001057",
+ "BDMAP_00000462",
+ "BDMAP_00003657",
+ "BDMAP_00002580",
+ "BDMAP_00004541",
+ "BDMAP_00000809",
+ "BDMAP_00004023",
+ "BDMAP_00001637",
+ "BDMAP_00004885",
+ "BDMAP_00004184",
+ "BDMAP_00000855",
+ "BDMAP_00005108",
+ "BDMAP_00003769",
+ "BDMAP_00003215",
+ "BDMAP_00003036",
+ "BDMAP_00002171",
+ "BDMAP_00002298",
+ "BDMAP_00001040",
+ "BDMAP_00001368",
+ "BDMAP_00002758",
+ "BDMAP_00000744",
+ "BDMAP_00006533",
+ "BDMAP_00000542",
+ "BDMAP_00004843",
+ "BDMAP_00001804",
+ "BDMAP_00001806",
+ "BDMAP_00000243",
+ "BDMAP_00009738",
+ "BDMAP_00000882",
+ "BDMAP_00001175",
+ "BDMAP_00005037",
+ "BDMAP_00003319",
+ "BDMAP_00003598",
+ "BDMAP_00002829",
+ "BDMAP_00001754",
+ "BDMAP_00001476",
+ "BDMAP_00000411",
+ "BDMAP_00004514",
+ "BDMAP_00001545",
+ "BDMAP_00004293",
+ "BDMAP_00004927",
+ "BDMAP_00001618",
+ "BDMAP_00002690",
+ "BDMAP_00003130",
+ "BDMAP_00000427",
+ "BDMAP_00003141",
+ "BDMAP_00003483",
+ "BDMAP_00005020",
+ "BDMAP_00001067",
+ "BDMAP_00001523",
+ "BDMAP_00005140",
+ "BDMAP_00002863",
+ "BDMAP_00001649",
+ "BDMAP_00003683",
+ "BDMAP_00002328",
+ "BDMAP_00004295",
+ "BDMAP_00000676",
+ "BDMAP_00001064",
+ "BDMAP_00004793",
+ "BDMAP_00000442",
+ "BDMAP_00003811",
+ "BDMAP_00002446",
+ "BDMAP_00003456",
+ "BDMAP_00003614",
+ "BDMAP_00004744",
+ "BDMAP_00000037",
+ "BDMAP_00004838",
+ "BDMAP_00003441",
+ "BDMAP_00002933",
+ "BDMAP_00002834",
+ "BDMAP_00003178",
+ "BDMAP_00001413",
+ "BDMAP_00000129",
+ "BDMAP_00003613",
+ "BDMAP_00000516",
+ "BDMAP_00000039",
+ "BDMAP_00000008",
+ "BDMAP_00003032",
+ "BDMAP_00001443",
+ "BDMAP_00004482",
+ "BDMAP_00003300",
+ "BDMAP_00004039",
+ "BDMAP_00002251",
+ "BDMAP_00000626",
+ "BDMAP_00001128",
+ "BDMAP_00004712",
+ "BDMAP_00000159",
+ "BDMAP_00003364",
+ "BDMAP_00002609",
+ "BDMAP_00002511",
+ "BDMAP_00003619",
+ "BDMAP_00000843",
+ "BDMAP_00003337",
+ "BDMAP_00003638",
+ "BDMAP_00003976",
+ "BDMAP_00001654",
+ "BDMAP_00002040",
+ "BDMAP_00001402",
+ "BDMAP_00003183",
+ "BDMAP_00003250",
+ "BDMAP_00001747",
+ "BDMAP_00003083",
+ "BDMAP_00004193",
+ "BDMAP_00001223",
+ "BDMAP_00002198",
+ "BDMAP_00004101",
+ "BDMAP_00002488",
+ "BDMAP_00001283",
+ "BDMAP_00005171",
+ "BDMAP_00002695",
+ "BDMAP_00003072",
+ "BDMAP_00003762",
+ "BDMAP_00000285",
+ "BDMAP_00003143",
+ "BDMAP_00003910",
+ "BDMAP_00002133",
+ "BDMAP_00002440",
+ "BDMAP_00001800",
+ "BDMAP_00003601",
+ "BDMAP_00003531",
+ "BDMAP_00002434",
+ "BDMAP_00001383",
+ "BDMAP_00001619",
+ "BDMAP_00004763",
+ "BDMAP_00002186",
+ "BDMAP_00001391",
+ "BDMAP_00000926",
+ "BDMAP_00005192",
+ "BDMAP_00002711",
+ "BDMAP_00004481",
+ "BDMAP_00004887",
+ "BDMAP_00004467",
+ "BDMAP_00001944",
+ "BDMAP_00003258",
+ "BDMAP_00005174",
+ "BDMAP_00001450",
+ "BDMAP_00004265",
+ "BDMAP_00002363",
+ "BDMAP_00001188",
+ "BDMAP_00002953",
+ "BDMAP_00003816",
+ "BDMAP_00004033",
+ "BDMAP_00001563",
+ "BDMAP_00004420",
+ "BDMAP_00004722",
+ "BDMAP_00002710",
+ "BDMAP_00002417",
+ "BDMAP_00001647",
+ "BDMAP_00001376",
+ "BDMAP_00004693",
+ "BDMAP_00000646",
+ "BDMAP_00003199",
+ "BDMAP_00000382",
+ "BDMAP_00004551",
+ "BDMAP_00002851",
+ "BDMAP_00002407",
+ "BDMAP_00003054",
+ "BDMAP_00004068",
+ "BDMAP_00002065",
+ "BDMAP_00001068",
+ "BDMAP_00000320",
+ "BDMAP_00004074",
+ "BDMAP_00001517",
+ "BDMAP_00000533",
+ "BDMAP_00000751",
+ "BDMAP_00000240",
+ "BDMAP_00000980",
+ "BDMAP_00000868",
+ "BDMAP_00001620",
+ "BDMAP_00002574",
+ "BDMAP_00000161",
+ "BDMAP_00004144",
+ "BDMAP_00000435",
+ "BDMAP_00003615",
+ "BDMAP_00004253",
+ "BDMAP_00001434",
+ "BDMAP_00002570",
+ "BDMAP_00000279",
+ "BDMAP_00004331",
+ "BDMAP_00004339",
+ "BDMAP_00002302",
+ "BDMAP_00003600",
+ "BDMAP_00000687",
+ "BDMAP_00003943",
+ "BDMAP_00000916",
+ "BDMAP_00000867",
+ "BDMAP_00000355",
+ "BDMAP_00001496",
+ "BDMAP_00003682",
+ "BDMAP_00000062",
+ "BDMAP_00004616",
+ "BDMAP_00003193",
+ "BDMAP_00001929",
+ "BDMAP_00001184",
+ "BDMAP_00003861",
+ "BDMAP_00000234",
+ "BDMAP_00001480",
+ "BDMAP_00001378",
+ "BDMAP_00001218",
+ "BDMAP_00000465",
+ "BDMAP_00004679",
+ "BDMAP_00003447",
+ "BDMAP_00000883",
+ "BDMAP_00000699",
+ "BDMAP_00002285",
+ "BDMAP_00000117",
+ "BDMAP_00000428",
+ "BDMAP_00002111",
+ "BDMAP_00001998",
+ "BDMAP_00004102",
+ "BDMAP_00000359",
+ "BDMAP_00000356",
+ "BDMAP_00003153",
+ "BDMAP_00001077",
+ "BDMAP_00001607",
+ "BDMAP_00003239",
+ "BDMAP_00000710",
+ "BDMAP_00004671",
+ "BDMAP_00004011",
+ "BDMAP_00005081",
+ "BDMAP_00002012",
+ "BDMAP_00003998",
+ "BDMAP_00004350",
+ "BDMAP_00001020",
+ "BDMAP_00000532",
+ "BDMAP_00000364",
+ "BDMAP_00001614",
+ "BDMAP_00001870",
+ "BDMAP_00001634",
+ "BDMAP_00000662",
+ "BDMAP_00000812",
+ "BDMAP_00002596",
+ "BDMAP_00003200",
+ "BDMAP_00000104",
+ "BDMAP_00003558",
+ "BDMAP_00001027",
+ "BDMAP_00003749",
+ "BDMAP_00000908",
+ "BDMAP_00002698",
+ "BDMAP_00001817",
+ "BDMAP_00000963",
+ "BDMAP_00000423",
+ "BDMAP_00004592",
+ "BDMAP_00002068",
+ "BDMAP_00005154",
+ "BDMAP_00004395",
+ "BDMAP_00000366",
+ "BDMAP_00001518",
+ "BDMAP_00000258",
+ "BDMAP_00002807",
+ "BDMAP_00003281",
+ "BDMAP_00003038",
+ "BDMAP_00002331",
+ "BDMAP_00002433",
+ "BDMAP_00001656",
+ "BDMAP_00000219",
+ "BDMAP_00003701",
+ "BDMAP_00003363",
+ "BDMAP_00003747",
+ "BDMAP_00000137",
+ "BDMAP_00002306",
+ "BDMAP_00005105",
+ "BDMAP_00003207",
+ "BDMAP_00002582",
+ "BDMAP_00000713",
+ "BDMAP_00000353",
+ "BDMAP_00004359",
+ "BDMAP_00002760",
+ "BDMAP_00005006",
+ "BDMAP_00003646",
+ "BDMAP_00001305",
+ "BDMAP_00004311",
+ "BDMAP_00001906",
+ "BDMAP_00002041",
+ "BDMAP_00002404",
+ "BDMAP_00004130",
+ "BDMAP_00002977",
+ "BDMAP_00003252",
+ "BDMAP_00002930",
+ "BDMAP_00002484",
+ "BDMAP_00001169",
+ "BDMAP_00003063",
+ "BDMAP_00000889",
+ "BDMAP_00000445",
+ "BDMAP_00003839",
+ "BDMAP_00002322",
+ "BDMAP_00002017",
+ "BDMAP_00004194",
+ "BDMAP_00001677",
+ "BDMAP_00003508",
+ "BDMAP_00003312",
+ "BDMAP_00004327",
+ "BDMAP_00001475",
+ "BDMAP_00003415",
+ "BDMAP_00002718",
+ "BDMAP_00004131",
+ "BDMAP_00004968",
+ "BDMAP_00002864",
+ "BDMAP_00000432",
+ "BDMAP_00000887",
+ "BDMAP_00004195",
+ "BDMAP_00004345",
+ "BDMAP_00002260",
+ "BDMAP_00002707",
+ "BDMAP_00003949",
+ "BDMAP_00001799",
+ "BDMAP_00004368",
+ "BDMAP_00003711",
+ "BDMAP_00001710",
+ "BDMAP_00004150",
+ "BDMAP_00004259",
+ "BDMAP_00004620",
+ "BDMAP_00001636",
+ "BDMAP_00003642",
+ "BDMAP_00000429",
+ "BDMAP_00004682",
+ "BDMAP_00001711",
+ "BDMAP_00002720",
+ "BDMAP_00000616",
+ "BDMAP_00002265",
+ "BDMAP_00002333",
+ "BDMAP_00003603",
+ "BDMAP_00003184",
+ "BDMAP_00005009",
+ "BDMAP_00003039",
+ "BDMAP_00004673",
+ "BDMAP_00003034",
+ "BDMAP_00001633",
+ "BDMAP_00000977",
+ "BDMAP_00001919",
+ "BDMAP_00002084",
+ "BDMAP_00001050",
+ "BDMAP_00004048",
+ "BDMAP_00001721",
+ "BDMAP_00001325",
+ "BDMAP_00001465",
+ "BDMAP_00003073",
+ "BDMAP_00000660",
+ "BDMAP_00003947",
+ "BDMAP_00001089",
+ "BDMAP_00003733",
+ "BDMAP_00004761",
+ "BDMAP_00000331",
+ "BDMAP_00000215",
+ "BDMAP_00005198",
+ "BDMAP_00002340",
+ "BDMAP_00000297",
+ "BDMAP_00002788",
+ "BDMAP_00000414",
+ "BDMAP_00003189",
+ "BDMAP_00002437",
+ "BDMAP_00003516",
+ "BDMAP_00000948",
+ "BDMAP_00003963",
+ "BDMAP_00002940",
+ "BDMAP_00001277",
+ "BDMAP_00001664",
+ "BDMAP_00004014",
+ "BDMAP_00001230",
+ "BDMAP_00004303",
+ "BDMAP_00002951",
+ "BDMAP_00004503",
+ "BDMAP_00004495",
+ "BDMAP_00008388",
+ "BDMAP_00004669",
+ "BDMAP_00001807",
+ "BDMAP_00001273",
+ "BDMAP_00000998",
+ "BDMAP_00003070",
+ "BDMAP_00003823",
+ "BDMAP_00003934",
+ "BDMAP_00000098",
+ "BDMAP_00004347",
+ "BDMAP_00002537",
+ "BDMAP_00001776",
+ "BDMAP_00004487",
+ "BDMAP_00003177",
+ "BDMAP_00005017",
+ "BDMAP_00004597",
+ "BDMAP_00002460",
+ "BDMAP_00001624",
+ "BDMAP_00002928",
+ "BDMAP_00004232",
+ "BDMAP_00004867",
+ "BDMAP_00000122",
+ "BDMAP_00005157",
+ "BDMAP_00003719",
+ "BDMAP_00001941",
+ "BDMAP_00003520",
+ "BDMAP_00002462",
+ "BDMAP_00003713",
+ "BDMAP_00001375",
+ "BDMAP_00005103",
+ "BDMAP_00000377",
+ "BDMAP_00000805",
+ "BDMAP_00003230",
+ "BDMAP_00000241",
+ "BDMAP_00003358",
+ "BDMAP_00002226",
+ "BDMAP_00002396",
+ "BDMAP_00002052",
+ "BDMAP_00000506",
+ "BDMAP_00000742",
+ "BDMAP_00003832",
+ "BDMAP_00000719",
+ "BDMAP_00005114",
+ "BDMAP_00004066",
+ "BDMAP_00003759",
+ "BDMAP_00004316",
+ "BDMAP_00001094",
+ "BDMAP_00000034",
+ "BDMAP_00004407",
+ "BDMAP_00003301",
+ "BDMAP_00000259",
+ "BDMAP_00002087",
+ "BDMAP_00003506",
+ "BDMAP_00002656",
+ "BDMAP_00002981",
+ "BDMAP_00000989",
+ "BDMAP_00002492",
+ "BDMAP_00000309",
+ "BDMAP_00000862",
+ "BDMAP_00005175",
+ "BDMAP_00001796",
+ "BDMAP_00003264",
+ "BDMAP_00000587",
+ "BDMAP_00003448",
+ "BDMAP_00002184",
+ "BDMAP_00001673",
+ "BDMAP_00004209",
+ "BDMAP_00000667",
+ "BDMAP_00001487",
+ "BDMAP_00005165",
+ "BDMAP_00002581",
+ "BDMAP_00004854",
+ "BDMAP_00005030",
+ "BDMAP_00001863",
+ "BDMAP_00003587",
+ "BDMAP_00001396",
+ "BDMAP_00000139",
+ "BDMAP_00003758",
+ "BDMAP_00001676",
+ "BDMAP_00000839",
+ "BDMAP_00002498",
+ "BDMAP_00000574",
+ "BDMAP_00001794",
+ "BDMAP_00003952",
+ "BDMAP_00001513",
+ "BDMAP_00003435",
+ "BDMAP_00004870",
+ "BDMAP_00004686",
+ "BDMAP_00001221",
+ "BDMAP_00003411",
+ "BDMAP_00001757",
+ "BDMAP_00002840",
+ "BDMAP_00000176",
+ "BDMAP_00004557",
+ "BDMAP_00003058",
+ "BDMAP_00003195",
+ "BDMAP_00002421",
+ "BDMAP_00000582",
+ "BDMAP_00004552",
+ "BDMAP_00002067",
+ "BDMAP_00005537",
+ "BDMAP_00003955",
+ "BDMAP_00000569",
+ "BDMAP_00001977",
+ "BDMAP_00001420",
+ "BDMAP_00002948",
+ "BDMAP_00003882",
+ "BDMAP_00000499",
+ "BDMAP_00003240",
+ "BDMAP_00002288",
+ "BDMAP_00005077",
+ "BDMAP_00002833",
+ "BDMAP_00004479",
+ "BDMAP_00002893",
+ "BDMAP_00002993",
+ "BDMAP_00004499",
+ "BDMAP_00000555",
+ "BDMAP_00002751",
+ "BDMAP_00003722",
+ "BDMAP_00001908",
+ "BDMAP_00002638",
+ "BDMAP_00000698",
+ "BDMAP_00003117",
+ "BDMAP_00002326",
+ "BDMAP_00002959",
+ "BDMAP_00000686",
+ "BDMAP_00004454",
+ "BDMAP_00001328",
+ "BDMAP_00002173",
+ "BDMAP_00001035",
+ "BDMAP_00001258",
+ "BDMAP_00002803",
+ "BDMAP_00002292",
+ "BDMAP_00003848",
+ "BDMAP_00004759",
+ "BDMAP_00002122",
+ "BDMAP_00000321",
+ "BDMAP_00001219",
+ "BDMAP_00001995",
+ "BDMAP_00000649",
+ "BDMAP_00005152",
+ "BDMAP_00001045",
+ "BDMAP_00002826",
+ "BDMAP_00001059",
+ "BDMAP_00001254",
+ "BDMAP_00000244",
+ "BDMAP_00004980",
+ "BDMAP_00002906",
+ "BDMAP_00002804",
+ "BDMAP_00001075",
+ "BDMAP_00000968",
+ "BDMAP_00002871",
+ "BDMAP_00001296",
+ "BDMAP_00001931",
+ "BDMAP_00003629",
+ "BDMAP_00004031",
+ "BDMAP_00004901",
+ "BDMAP_00000725",
+ "BDMAP_00003245",
+ "BDMAP_00000788",
+ "BDMAP_00001557",
+ "BDMAP_00001390",
+ "BDMAP_00004652",
+ "BDMAP_00001939",
+ "BDMAP_00000059",
+ "BDMAP_00001242",
+ "BDMAP_00004091",
+ "BDMAP_00004856",
+ "BDMAP_00000329",
+ "BDMAP_00003444",
+ "BDMAP_00003880",
+ "BDMAP_00001707",
+ "BDMAP_00004354",
+ "BDMAP_00001690",
+ "BDMAP_00001684",
+ "BDMAP_00002085",
+ "BDMAP_00003549",
+ "BDMAP_00000518",
+ "BDMAP_00001289",
+ "BDMAP_00004087",
+ "BDMAP_00001768",
+ "BDMAP_00000036",
+ "BDMAP_00004956",
+ "BDMAP_00003491",
+ "BDMAP_00004437",
+ "BDMAP_00004990",
+ "BDMAP_00003957",
+ "BDMAP_00003697",
+ "BDMAP_00003579",
+ "BDMAP_00000434",
+ "BDMAP_00004926",
+ "BDMAP_00002163",
+ "BDMAP_00001126",
+ "BDMAP_00004925",
+ "BDMAP_00000706",
+ "BDMAP_00000368",
+ "BDMAP_00001451",
+ "BDMAP_00002742",
+ "BDMAP_00001612",
+ "BDMAP_00005166",
+ "BDMAP_00002422",
+ "BDMAP_00000452",
+ "BDMAP_00003815",
+ "BDMAP_00004834",
+ "BDMAP_00000053",
+ "BDMAP_00001410",
+ "BDMAP_00000837",
+ "BDMAP_00003704",
+ "BDMAP_00002005",
+ "BDMAP_00001602",
+ "BDMAP_00004633",
+ "BDMAP_00002573",
+ "BDMAP_00000201",
+ "BDMAP_00002942",
+ "BDMAP_00001744",
+ "BDMAP_00002505",
+ "BDMAP_00000376",
+ "BDMAP_00003851",
+ "BDMAP_00001549",
+ "BDMAP_00003973",
+ "BDMAP_00002552",
+ "BDMAP_00002018",
+ "BDMAP_00004260",
+ "BDMAP_00003869",
+ "BDMAP_00004427",
+ "BDMAP_00002273",
+ "BDMAP_00004702",
+ "BDMAP_00003457",
+ "BDMAP_00004181",
+ "BDMAP_00003956",
+ "BDMAP_00001183",
+ "BDMAP_00001703",
+ "BDMAP_00000810",
+ "BDMAP_00002507",
+ "BDMAP_00003930",
+ "BDMAP_00004257",
+ "BDMAP_00001252",
+ "BDMAP_00003984",
+ "BDMAP_00004903",
+ "BDMAP_00002675",
+ "BDMAP_00002431",
+ "BDMAP_00004083",
+ "BDMAP_00005099",
+ "BDMAP_00004581",
+ "BDMAP_00005136",
+ "BDMAP_00003808",
+ "BDMAP_00000066",
+ "BDMAP_00002476",
+ "BDMAP_00005046",
+ "BDMAP_00003721",
+ "BDMAP_00003672",
+ "BDMAP_00000439",
+ "BDMAP_00004216",
+ "BDMAP_00004608",
+ "BDMAP_00004294",
+ "BDMAP_00003736",
+ "BDMAP_00004148",
+ "BDMAP_00001637",
+ "BDMAP_00003666",
+ "BDMAP_00003343",
+ "BDMAP_00004457",
+ "BDMAP_00002884",
+ "BDMAP_00004343",
+ "BDMAP_00004317",
+ "BDMAP_00004717",
+ "BDMAP_00000826",
+ "BDMAP_00004510",
+ "BDMAP_00002776",
+ "BDMAP_00003553",
+ "BDMAP_00000336",
+ "BDMAP_00001268",
+ "BDMAP_00000601",
+ "BDMAP_00003035",
+ "BDMAP_00000924",
+ "BDMAP_00002114",
+ "BDMAP_00003774",
+ "BDMAP_00001104",
+ "BDMAP_00001516",
+ "BDMAP_00002920",
+ "BDMAP_00002410",
+ "BDMAP_00008389",
+ "BDMAP_00000319",
+ "BDMAP_00003392",
+ "BDMAP_00003253",
+ "BDMAP_00002353",
+ "BDMAP_00005167",
+ "BDMAP_00002617",
+ "BDMAP_00002045",
+ "BDMAP_00002524",
+ "BDMAP_00002870",
+ "BDMAP_00003220",
+ "BDMAP_00001079",
+ "BDMAP_00008617",
+ "BDMAP_00002035",
+ "BDMAP_00002579",
+ "BDMAP_00003028",
+ "BDMAP_00000815",
+ "BDMAP_00002806",
+ "BDMAP_00002808",
+ "BDMAP_00002509",
+ "BDMAP_00000985",
+ "BDMAP_00002696",
+ "BDMAP_00003463",
+ "BDMAP_00000233",
+ "BDMAP_00000982",
+ "BDMAP_00004836",
+ "BDMAP_00001408",
+ "BDMAP_00001225",
+ "BDMAP_00000229",
+ "BDMAP_00001001",
+ "BDMAP_00003409",
+ "BDMAP_00002653",
+ "BDMAP_00000102",
+ "BDMAP_00001853",
+ "BDMAP_00002211",
+ "BDMAP_00001340",
+ "BDMAP_00005148",
+ "BDMAP_00002562",
+ "BDMAP_00004771",
+ "BDMAP_00003132",
+ "BDMAP_00000604",
+ "BDMAP_00003294",
+ "BDMAP_00003315",
+ "BDMAP_00002164",
+ "BDMAP_00001064",
+ "BDMAP_00004605",
+ "BDMAP_00004268",
+ "BDMAP_00001851",
+ "BDMAP_00001161",
+ "BDMAP_00004630",
+ "BDMAP_00000936",
+ "BDMAP_00002487",
+ "BDMAP_00004561",
+ "BDMAP_00004328",
+ "BDMAP_00005113",
+ "BDMAP_00003051",
+ "BDMAP_00000987",
+ "BDMAP_00005162",
+ "BDMAP_00005085",
+ "BDMAP_00003359",
+ "BDMAP_00005151",
+ "BDMAP_00002655",
+ "BDMAP_00003535",
+ "BDMAP_00001947",
+ "BDMAP_00002086",
+ "BDMAP_00004775",
+ "BDMAP_00002022",
+ "BDMAP_00003509",
+ "BDMAP_00000656",
+ "BDMAP_00001878",
+ "BDMAP_00001261",
+ "BDMAP_00004208",
+ "BDMAP_00003530",
+ "BDMAP_00001228",
+ "BDMAP_00000044",
+ "BDMAP_00005399",
+ "BDMAP_00000293",
+ "BDMAP_00003806",
+ "BDMAP_00000489",
+ "BDMAP_00000481",
+ "BDMAP_00002936",
+ "BDMAP_00000724",
+ "BDMAP_00000265",
+ "BDMAP_00002990",
+ "BDMAP_00003994",
+ "BDMAP_00000773",
+ "BDMAP_00002033",
+ "BDMAP_00004397",
+ "BDMAP_00001133",
+ "BDMAP_00004224",
+ "BDMAP_00004211",
+ "BDMAP_00001119",
+ "BDMAP_00004897",
+ "BDMAP_00000090",
+ "BDMAP_00002075",
+ "BDMAP_00000583",
+ "BDMAP_00001740",
+ "BDMAP_00000951",
+ "BDMAP_00000023",
+ "BDMAP_00000756",
+ "BDMAP_00002746",
+ "BDMAP_00000128",
+ "BDMAP_00002558",
+ "BDMAP_00001831",
+ "BDMAP_00004979",
+ "BDMAP_00003727",
+ "BDMAP_00001581",
+ "BDMAP_00001571",
+ "BDMAP_00004981",
+ "BDMAP_00004296",
+ "BDMAP_00000249",
+ "BDMAP_00000935",
+ "BDMAP_00000871",
+ "BDMAP_00001911",
+ "BDMAP_00002787",
+ "BDMAP_00002723",
+ "BDMAP_00000943",
+ "BDMAP_00001826",
+ "BDMAP_00002501",
+ "BDMAP_00001784",
+ "BDMAP_00003197",
+ "BDMAP_00002504",
+ "BDMAP_00001286",
+ "BDMAP_00003735",
+ "BDMAP_00002200",
+ "BDMAP_00003384",
+ "BDMAP_00001520",
+ "BDMAP_00000043",
+ "BDMAP_00004315",
+ "BDMAP_00000836",
+ "BDMAP_00003129",
+ "BDMAP_00000162",
+ "BDMAP_00003996",
+ "BDMAP_00001500",
+ "BDMAP_00000917",
+ "BDMAP_00003493",
+ "BDMAP_00002319",
+ "BDMAP_00001411",
+ "BDMAP_00004108",
+ "BDMAP_00002426",
+ "BDMAP_00004850",
+ "BDMAP_00005191",
+ "BDMAP_00001483",
+ "BDMAP_00002665",
+ "BDMAP_00001275",
+ "BDMAP_00001239",
+ "BDMAP_00004627",
+ "BDMAP_00004579",
+ "BDMAP_00004928",
+ "BDMAP_00003959",
+ "BDMAP_00001444",
+ "BDMAP_00003514",
+ "BDMAP_00001370",
+ "BDMAP_00001457",
+ "BDMAP_00000210",
+ "BDMAP_00003923",
+ "BDMAP_00001772",
+ "BDMAP_00002571",
+ "BDMAP_00002991",
+ "BDMAP_00000844",
+ "BDMAP_00001533",
+ "BDMAP_00002361",
+ "BDMAP_00003777",
+ "BDMAP_00001918",
+ "BDMAP_00001138",
+ "BDMAP_00001130",
+ "BDMAP_00001285",
+ "BDMAP_00003128",
+ "BDMAP_00002518",
+ "BDMAP_00002057",
+ "BDMAP_00004808",
+ "BDMAP_00002263",
+ "BDMAP_00003608",
+ "BDMAP_00003581",
+ "BDMAP_00000475",
+ "BDMAP_00004886",
+ "BDMAP_00000562",
+ "BDMAP_00004528",
+ "BDMAP_00004012",
+ "BDMAP_00004175",
+ "BDMAP_00003422",
+ "BDMAP_00001530",
+ "BDMAP_00001635",
+ "BDMAP_00005150",
+ "BDMAP_00003484",
+ "BDMAP_00003461",
+ "BDMAP_00004923",
+ "BDMAP_00003335",
+ "BDMAP_00001109",
+ "BDMAP_00001256",
+ "BDMAP_00004817",
+ "BDMAP_00000033",
+ "BDMAP_00003717",
+ "BDMAP_00003841",
+ "BDMAP_00002902",
+ "BDMAP_00001193",
+ "BDMAP_00000449",
+ "BDMAP_00001238",
+ "BDMAP_00001522",
+ "BDMAP_00002146",
+ "BDMAP_00004586",
+ "BDMAP_00003087",
+ "BDMAP_00002043",
+ "BDMAP_00000149",
+ "BDMAP_00001752",
+ "BDMAP_00000902",
+ "BDMAP_00003849",
+ "BDMAP_00003928",
+ "BDMAP_00004922",
+ "BDMAP_00000557",
+ "BDMAP_00002854",
+ "BDMAP_00003381",
+ "BDMAP_00000571",
+ "BDMAP_00001562",
+ "BDMAP_00004460",
+ "BDMAP_00004475",
+ "BDMAP_00002472",
+ "BDMAP_00001669",
+ "BDMAP_00002929",
+ "BDMAP_00001553",
+ "BDMAP_00003324",
+ "BDMAP_00003256",
+ "BDMAP_00003455",
+ "BDMAP_00003767",
+ "BDMAP_00001839",
+ "BDMAP_00001705",
+ "BDMAP_00000540",
+ "BDMAP_00001540",
+ "BDMAP_00002661",
+ "BDMAP_00002677",
+ "BDMAP_00001987",
+ "BDMAP_00000245",
+ "BDMAP_00003425",
+ "BDMAP_00003740",
+ "BDMAP_00004414",
+ "BDMAP_00002626",
+ "BDMAP_00004738",
+ "BDMAP_00001869",
+ "BDMAP_00004815",
+ "BDMAP_00000327",
+ "BDMAP_00004212",
+ "BDMAP_00003656",
+ "BDMAP_00001456",
+ "BDMAP_00001511",
+ "BDMAP_00004030",
+ "BDMAP_00000834",
+ "BDMAP_00001335",
+ "BDMAP_00004065",
+ "BDMAP_00000160",
+ "BDMAP_00001568",
+ "BDMAP_00001892",
+ "BDMAP_00002347",
+ "BDMAP_00003121",
+ "BDMAP_00003019",
+ "BDMAP_00003895",
+ "BDMAP_00004093",
+ "BDMAP_00002060",
+ "BDMAP_00003576",
+ "BDMAP_00003248",
+ "BDMAP_00001246",
+ "BDMAP_00001877",
+ "BDMAP_00004146",
+ "BDMAP_00004278",
+ "BDMAP_00003219",
+ "BDMAP_00004104",
+ "BDMAP_00004349",
+ "BDMAP_00001117",
+ "BDMAP_00002383",
+ "BDMAP_00005120",
+ "BDMAP_00001023",
+ "BDMAP_00003429",
+ "BDMAP_00003752",
+ "BDMAP_00001782",
+ "BDMAP_00002873",
+ "BDMAP_00000469",
+ "BDMAP_00001777",
+ "BDMAP_00000263",
+ "BDMAP_00003694",
+ "BDMAP_00002545",
+ "BDMAP_00002931",
+ "BDMAP_00002713",
+ "BDMAP_00004737",
+ "BDMAP_00001791",
+ "BDMAP_00001749",
+ "BDMAP_00004489",
+ "BDMAP_00000602",
+ "BDMAP_00001868",
+ "BDMAP_00004780",
+ "BDMAP_00002448",
+ "BDMAP_00001281",
+ "BDMAP_00002762",
+ "BDMAP_00004727",
+ "BDMAP_00003255",
+ "BDMAP_00004373",
+ "BDMAP_00003203",
+ "BDMAP_00000923",
+ "BDMAP_00001731",
+ "BDMAP_00003158",
+ "BDMAP_00002394",
+ "BDMAP_00002166",
+ "BDMAP_00002358",
+ "BDMAP_00000567",
+ "BDMAP_00002481",
+ "BDMAP_00002673",
+ "BDMAP_00001251",
+ "BDMAP_00001107",
+ "BDMAP_00002496",
+ "BDMAP_00004645",
+ "BDMAP_00002966",
+ "BDMAP_00002310",
+ "BDMAP_00001896",
+ "BDMAP_00001359",
+ "BDMAP_00002403",
+ "BDMAP_00003059",
+ "BDMAP_00004746",
+ "BDMAP_00002716",
+ "BDMAP_00003152",
+ "BDMAP_00001380",
+ "BDMAP_00000927",
+ "BDMAP_00001891",
+ "BDMAP_00001351",
+ "BDMAP_00004389",
+ "BDMAP_00003833",
+ "BDMAP_00003024",
+ "BDMAP_00001265",
+ "BDMAP_00000505",
+ "BDMAP_00002881",
+ "BDMAP_00000167",
+ "BDMAP_00003406",
+ "BDMAP_00003206",
+ "BDMAP_00002992",
+ "BDMAP_00002546",
+ "BDMAP_00002471",
+ "BDMAP_00003580",
+ "BDMAP_00002708",
+ "BDMAP_00002943",
+ "BDMAP_00001324",
+ "BDMAP_00001422",
+ "BDMAP_00001679",
+ "BDMAP_00000310",
+ "BDMAP_00006181",
+ "BDMAP_00001012",
+ "BDMAP_00001913",
+ "BDMAP_00003190",
+ "BDMAP_00003202",
+ "BDMAP_00004772",
+ "BDMAP_00001840",
+ "BDMAP_00001867",
+ "BDMAP_00003225",
+ "BDMAP_00002728",
+ "BDMAP_00002091",
+ "BDMAP_00000653",
+ "BDMAP_00003194",
+ "BDMAP_00004154",
+ "BDMAP_00001222",
+ "BDMAP_00003465",
+ "BDMAP_00004609",
+ "BDMAP_00002381",
+ "BDMAP_00004027",
+ "BDMAP_00002798",
+ "BDMAP_00001474",
+ "BDMAP_00003971",
+ "BDMAP_00002066",
+ "BDMAP_00002689",
+ "BDMAP_00001945",
+ "BDMAP_00003746",
+ "BDMAP_00002663",
+ "BDMAP_00002592",
+ "BDMAP_00001536",
+ "BDMAP_00002099",
+ "BDMAP_00002354",
+ "BDMAP_00002243",
+ "BDMAP_00000304",
+ "BDMAP_00001950",
+ "BDMAP_00004417",
+ "BDMAP_00004575",
+ "BDMAP_00001688",
+ "BDMAP_00004844",
+ "BDMAP_00004158",
+ "BDMAP_00000803",
+ "BDMAP_00002889",
+ "BDMAP_00003529",
+ "BDMAP_00000035",
+ "BDMAP_00001453",
+ "BDMAP_00004487",
+ "BDMAP_00002243",
+ "BDMAP_00004878",
+ "BDMAP_00003626",
+ "BDMAP_00002381",
+ "BDMAP_00001260",
+ "BDMAP_00000802",
+ "BDMAP_00008568",
+ "BDMAP_00003816",
+ "BDMAP_00000564",
+ "BDMAP_00001236",
+ "BDMAP_00007629",
+ "BDMAP_00002805",
+ "BDMAP_00000413",
+ "BDMAP_00001239",
+ "BDMAP_00004890",
+ "BDMAP_00000695",
+ "BDMAP_00003889",
+ "BDMAP_00004630",
+ "BDMAP_00001122",
+ "BDMAP_00004702",
+ "BDMAP_00003028",
+ "BDMAP_00002111",
+ "BDMAP_00004984",
+ "BDMAP_00002267",
+ "BDMAP_00004049",
+ "BDMAP_00005753",
+ "BDMAP_00004289",
+ "BDMAP_00004737",
+ "BDMAP_00001697",
+ "BDMAP_00000778",
+ "BDMAP_00001944",
+ "BDMAP_00002359",
+ "BDMAP_00000524",
+ "BDMAP_00004459",
+ "BDMAP_00003307",
+ "BDMAP_00008085",
+ "BDMAP_00003984",
+ "BDMAP_00004013",
+ "BDMAP_00001997",
+ "BDMAP_00003038",
+ "BDMAP_00002342",
+ "BDMAP_00001450",
+ "BDMAP_00003579",
+ "BDMAP_00000601",
+ "BDMAP_00001870",
+ "BDMAP_00000347",
+ "BDMAP_00002462",
+ "BDMAP_00002147",
+ "BDMAP_00001333",
+ "BDMAP_00001731",
+ "BDMAP_00000210",
+ "BDMAP_00002340",
+ "BDMAP_00002198",
+ "BDMAP_00002043",
+ "BDMAP_00000741",
+ "BDMAP_00001093",
+ "BDMAP_00009277",
+ "BDMAP_00004508",
+ "BDMAP_00003898",
+ "BDMAP_00000365",
+ "BDMAP_00001800",
+ "BDMAP_00000607",
+ "BDMAP_00000113",
+ "BDMAP_00004998",
+ "BDMAP_00003979",
+ "BDMAP_00001025",
+ "BDMAP_00002080",
+ "BDMAP_00003697",
+ "BDMAP_00004809",
+ "BDMAP_00003004",
+ "BDMAP_00003337",
+ "BDMAP_00002373",
+ "BDMAP_00003524",
+ "BDMAP_00009876",
+ "BDMAP_00004108",
+ "BDMAP_00008555",
+ "BDMAP_00000506",
+ "BDMAP_00004408",
+ "BDMAP_00002252",
+ "BDMAP_00002546",
+ "BDMAP_00004763",
+ "BDMAP_00000270",
+ "BDMAP_00003258",
+ "BDMAP_00004588",
+ "BDMAP_00000205",
+ "BDMAP_00001740",
+ "BDMAP_00004259",
+ "BDMAP_00002929",
+ "BDMAP_00001221",
+ "BDMAP_00003920",
+ "BDMAP_00000917",
+ "BDMAP_00003390",
+ "BDMAP_00000423",
+ "BDMAP_00004349",
+ "BDMAP_00002937",
+ "BDMAP_00008305",
+ "BDMAP_00004527",
+ "BDMAP_00003177",
+ "BDMAP_00007259",
+ "BDMAP_00004598",
+ "BDMAP_00003508",
+ "BDMAP_00000489",
+ "BDMAP_00003682",
+ "BDMAP_00003867",
+ "BDMAP_00000742",
+ "BDMAP_00003897",
+ "BDMAP_00001285",
+ "BDMAP_00005119",
+ "BDMAP_00004669",
+ "BDMAP_00001749",
+ "BDMAP_00002066",
+ "BDMAP_00001064",
+ "BDMAP_00007159",
+ "BDMAP_00004503",
+ "BDMAP_00004825",
+ "BDMAP_00000400",
+ "BDMAP_00003257",
+ "BDMAP_00007822",
+ "BDMAP_00001950",
+ "BDMAP_00001241",
+ "BDMAP_00001379",
+ "BDMAP_00005186",
+ "BDMAP_00004028",
+ "BDMAP_00001266",
+ "BDMAP_00000648",
+ "BDMAP_00001802",
+ "BDMAP_00001524",
+ "BDMAP_00002479",
+ "BDMAP_00002856",
+ "BDMAP_00001443",
+ "BDMAP_00002045",
+ "BDMAP_00001998",
+ "BDMAP_00002713",
+ "BDMAP_00005500",
+ "BDMAP_00004416",
+ "BDMAP_00003664",
+ "BDMAP_00006713",
+ "BDMAP_00002053",
+ "BDMAP_00004091",
+ "BDMAP_00003932",
+ "BDMAP_00001907",
+ "BDMAP_00002322",
+ "BDMAP_00000475",
+ "BDMAP_00002485",
+ "BDMAP_00002358",
+ "BDMAP_00004016",
+ "BDMAP_00002292",
+ "BDMAP_00002901",
+ "BDMAP_00001026",
+ "BDMAP_00004943",
+ "BDMAP_00001451",
+ "BDMAP_00000546",
+ "BDMAP_00007236",
+ "BDMAP_00000603",
+ "BDMAP_00000201",
+ "BDMAP_00003839",
+ "BDMAP_00003151",
+ "BDMAP_00000827",
+ "BDMAP_00002918",
+ "BDMAP_00006507",
+ "BDMAP_00001877",
+ "BDMAP_00008306",
+ "BDMAP_00004370",
+ "BDMAP_00000941",
+ "BDMAP_00003072",
+ "BDMAP_00002012",
+ "BDMAP_00004325",
+ "BDMAP_00004995",
+ "BDMAP_00001309",
+ "BDMAP_00003934",
+ "BDMAP_00004772",
+ "BDMAP_00001637",
+ "BDMAP_00000001",
+ "BDMAP_00003857",
+ "BDMAP_00003184",
+ "BDMAP_00002699",
+ "BDMAP_00005097",
+ "BDMAP_00001362",
+ "BDMAP_00005021",
+ "BDMAP_00003074",
+ "BDMAP_00005547",
+ "BDMAP_00001033",
+ "BDMAP_00000273",
+ "BDMAP_00003330",
+ "BDMAP_00003497",
+ "BDMAP_00002806",
+ "BDMAP_00005103",
+ "BDMAP_00001692",
+ "BDMAP_00001471",
+ "BDMAP_00001677",
+ "BDMAP_00003361",
+ "BDMAP_00000091",
+ "BDMAP_00009022",
+ "BDMAP_00001581",
+ "BDMAP_00004928",
+ "BDMAP_00001154",
+ "BDMAP_00001391",
+ "BDMAP_00000642",
+ "BDMAP_00004102",
+ "BDMAP_00003619",
+ "BDMAP_00001316",
+ "BDMAP_00000643",
+ "BDMAP_00001559",
+ "BDMAP_00000963",
+ "BDMAP_00003798",
+ "BDMAP_00002052",
+ "BDMAP_00004435",
+ "BDMAP_00000408",
+ "BDMAP_00001188",
+ "BDMAP_00002791",
+ "BDMAP_00003499",
+ "BDMAP_00003248",
+ "BDMAP_00002698",
+ "BDMAP_00004185",
+ "BDMAP_00002849",
+ "BDMAP_00003394",
+ "BDMAP_00000985",
+ "BDMAP_00003199",
+ "BDMAP_00005546",
+ "BDMAP_00002529",
+ "BDMAP_00004017",
+ "BDMAP_00000951",
+ "BDMAP_00004052",
+ "BDMAP_00003415",
+ "BDMAP_00002851",
+ "BDMAP_00003112",
+ "BDMAP_00001228",
+ "BDMAP_00001171",
+ "BDMAP_00000907",
+ "BDMAP_00001619",
+ "BDMAP_00002909",
+ "BDMAP_00004228",
+ "BDMAP_00003848",
+ "BDMAP_00002283",
+ "BDMAP_00003008",
+ "BDMAP_00002712",
+ "BDMAP_00002993",
+ "BDMAP_00000583",
+ "BDMAP_00006148",
+ "BDMAP_00002448",
+ "BDMAP_00003377",
+ "BDMAP_00000305",
+ "BDMAP_00004866",
+ "BDMAP_00003482",
+ "BDMAP_00002349",
+ "BDMAP_00004496",
+ "BDMAP_00003116",
+ "BDMAP_00001966",
+ "BDMAP_00001810",
+ "BDMAP_00002970",
+ "BDMAP_00005136",
+ "BDMAP_00003733",
+ "BDMAP_00003117",
+ "BDMAP_00003463",
+ "BDMAP_00002000",
+ "BDMAP_00002282",
+ "BDMAP_00007630",
+ "BDMAP_00002382",
+ "BDMAP_00003054",
+ "BDMAP_00002507",
+ "BDMAP_00000140",
+ "BDMAP_00000247",
+ "BDMAP_00002289",
+ "BDMAP_00004405",
+ "BDMAP_00004372",
+ "BDMAP_00004780",
+ "BDMAP_00007665",
+ "BDMAP_00005752",
+ "BDMAP_00001957",
+ "BDMAP_00005065",
+ "BDMAP_00002837",
+ "BDMAP_00005175",
+ "BDMAP_00002159",
+ "BDMAP_00003841",
+ "BDMAP_00001753",
+ "BDMAP_00001834",
+ "BDMAP_00002117",
+ "BDMAP_00003893",
+ "BDMAP_00003557",
+ "BDMAP_00002579",
+ "BDMAP_00000480",
+ "BDMAP_00004359",
+ "BDMAP_00004888",
+ "BDMAP_00001115",
+ "BDMAP_00000915",
+ "BDMAP_00001766",
+ "BDMAP_00001783",
+ "BDMAP_00004557",
+ "BDMAP_00000924",
+ "BDMAP_00003910",
+ "BDMAP_00005106",
+ "BDMAP_00000709",
+ "BDMAP_00004736",
+ "BDMAP_00001699",
+ "BDMAP_00002321",
+ "BDMAP_00004311",
+ "BDMAP_00001869",
+ "BDMAP_00004639",
+ "BDMAP_00001340",
+ "BDMAP_00001796",
+ "BDMAP_00004528",
+ "BDMAP_00003747",
+ "BDMAP_00000671",
+ "BDMAP_00002158",
+ "BDMAP_00001254",
+ "BDMAP_00000732",
+ "BDMAP_00002200",
+ "BDMAP_00004279",
+ "BDMAP_00000377",
+ "BDMAP_00000437",
+ "BDMAP_00003513",
+ "BDMAP_00001640",
+ "BDMAP_00002389",
+ "BDMAP_00003176",
+ "BDMAP_00002748",
+ "BDMAP_00003911",
+ "BDMAP_00001721",
+ "BDMAP_00003203",
+ "BDMAP_00002719",
+ "BDMAP_00002146",
+ "BDMAP_00007579",
+ "BDMAP_00000310",
+ "BDMAP_00003569",
+ "BDMAP_00004151",
+ "BDMAP_00003746",
+ "BDMAP_00004869",
+ "BDMAP_00000037",
+ "BDMAP_00009779",
+ "BDMAP_00004727",
+ "BDMAP_00004010",
+ "BDMAP_00006036",
+ "BDMAP_00002716",
+ "BDMAP_00008084",
+ "BDMAP_00001010",
+ "BDMAP_00003556",
+ "BDMAP_00007838",
+ "BDMAP_00000849",
+ "BDMAP_00001539",
+ "BDMAP_00003052",
+ "BDMAP_00004103",
+ "BDMAP_00006569",
+ "BDMAP_00002033",
+ "BDMAP_00003723",
+ "BDMAP_00002055",
+ "BDMAP_00002718",
+ "BDMAP_00002084",
+ "BDMAP_00001094",
+ "BDMAP_00002419",
+ "BDMAP_00000533",
+ "BDMAP_00000918",
+ "BDMAP_00003236",
+ "BDMAP_00004209",
+ "BDMAP_00004979",
+ "BDMAP_00008828",
+ "BDMAP_00003190",
+ "BDMAP_00002167",
+ "BDMAP_00003135",
+ "BDMAP_00001397",
+ "BDMAP_00002285",
+ "BDMAP_00000457",
+ "BDMAP_00001805",
+ "BDMAP_00002040",
+ "BDMAP_00005130",
+ "BDMAP_00004761",
+ "BDMAP_00003763",
+ "BDMAP_00000921",
+ "BDMAP_00004600",
+ "BDMAP_00003140",
+ "BDMAP_00003949",
+ "BDMAP_00001343",
+ "BDMAP_00007524",
+ "BDMAP_00003295",
+ "BDMAP_00003335",
+ "BDMAP_00004012",
+ "BDMAP_00004536",
+ "BDMAP_00000084",
+ "BDMAP_00005138",
+ "BDMAP_00001185",
+ "BDMAP_00000362",
+ "BDMAP_00004854",
+ "BDMAP_00004664",
+ "BDMAP_00004187",
+ "BDMAP_00001486",
+ "BDMAP_00002951",
+ "BDMAP_00001375",
+ "BDMAP_00007429",
+ "BDMAP_00003158",
+ "BDMAP_00007561",
+ "BDMAP_00001402",
+ "BDMAP_00000611",
+ "BDMAP_00001170",
+ "BDMAP_00005717",
+ "BDMAP_00001200",
+ "BDMAP_00004117",
+ "BDMAP_00003791",
+ "BDMAP_00002275",
+ "BDMAP_00000474",
+ "BDMAP_00002466",
+ "BDMAP_00000283",
+ "BDMAP_00003297",
+ "BDMAP_00002271",
+ "BDMAP_00000927",
+ "BDMAP_00005083",
+ "BDMAP_00003261",
+ "BDMAP_00004839",
+ "BDMAP_00004855",
+ "BDMAP_00004211",
+ "BDMAP_00001502",
+ "BDMAP_00003629",
+ "BDMAP_00004304",
+ "BDMAP_00000258",
+ "BDMAP_00004529",
+ "BDMAP_00003287",
+ "BDMAP_00004991",
+ "BDMAP_00000572",
+ "BDMAP_00003642",
+ "BDMAP_00002394",
+ "BDMAP_00002127",
+ "BDMAP_00004830",
+ "BDMAP_00002495",
+ "BDMAP_00000729",
+ "BDMAP_00003574",
+ "BDMAP_00002841",
+ "BDMAP_00001219",
+ "BDMAP_00008829",
+ "BDMAP_00001631",
+ "BDMAP_00003206",
+ "BDMAP_00000232",
+ "BDMAP_00004271",
+ "BDMAP_00001351",
+ "BDMAP_00001678",
+ "BDMAP_00004093",
+ "BDMAP_00004462",
+ "BDMAP_00000454",
+ "BDMAP_00004509",
+ "BDMAP_00000981",
+ "BDMAP_00004199",
+ "BDMAP_00001012",
+ "BDMAP_00001055",
+ "BDMAP_00002831",
+ "BDMAP_00001596",
+ "BDMAP_00004745",
+ "BDMAP_00001457",
+ "BDMAP_00003228",
+ "BDMAP_00003002",
+ "BDMAP_00001378",
+ "BDMAP_00008344",
+ "BDMAP_00000342",
+ "BDMAP_00000965",
+ "BDMAP_00001114",
+ "BDMAP_00003719",
+ "BDMAP_00002583",
+ "BDMAP_00001192",
+ "BDMAP_00003704",
+ "BDMAP_00005168",
+ "BDMAP_00000815",
+ "BDMAP_00000013",
+ "BDMAP_00001270",
+ "BDMAP_00001839",
+ "BDMAP_00000971",
+ "BDMAP_00005035",
+ "BDMAP_00000943",
+ "BDMAP_00002172",
+ "BDMAP_00004625",
+ "BDMAP_00004147",
+ "BDMAP_00004165",
+ "BDMAP_00002598",
+ "BDMAP_00003268",
+ "BDMAP_00005160",
+ "BDMAP_00003333",
+ "BDMAP_00003827",
+ "BDMAP_00004894",
+ "BDMAP_00002318",
+ "BDMAP_00002739",
+ "BDMAP_00000939",
+ "BDMAP_00004384",
+ "BDMAP_00000030",
+ "BDMAP_00002730",
+ "BDMAP_00000942",
+ "BDMAP_00000069",
+ "BDMAP_00004676",
+ "BDMAP_00003634",
+ "BDMAP_00000373",
+ "BDMAP_00003357",
+ "BDMAP_00001865",
+ "BDMAP_00003299",
+ "BDMAP_00001209",
+ "BDMAP_00001215",
+ "BDMAP_00002230",
+ "BDMAP_00002199",
+ "BDMAP_00002401",
+ "BDMAP_00000873",
+ "BDMAP_00002152",
+ "BDMAP_00002828",
+ "BDMAP_00002451",
+ "BDMAP_00000913",
+ "BDMAP_00001078",
+ "BDMAP_00001024",
+ "BDMAP_00001982",
+ "BDMAP_00003560",
+ "BDMAP_00004196",
+ "BDMAP_00004431",
+ "BDMAP_00002875",
+ "BDMAP_00004604",
+ "BDMAP_00004450",
+ "BDMAP_00002305",
+ "BDMAP_00005001",
+ "BDMAP_00004374",
+ "BDMAP_00001102",
+ "BDMAP_00001917",
+ "BDMAP_00002846",
+ "BDMAP_00001732",
+ "BDMAP_00004910",
+ "BDMAP_00000552",
+ "BDMAP_00002103",
+ "BDMAP_00002704",
+ "BDMAP_00004764",
+ "BDMAP_00003510",
+ "BDMAP_00003972",
+ "BDMAP_00003113",
+ "BDMAP_00004491",
+ "BDMAP_00004615",
+ "BDMAP_00005067",
+ "BDMAP_00003412",
+ "BDMAP_00001809",
+ "BDMAP_00001785",
+ "BDMAP_00000828",
+ "BDMAP_00002039",
+ "BDMAP_00004493",
+ "BDMAP_00000851",
+ "BDMAP_00002185",
+ "BDMAP_00001237",
+ "BDMAP_00004163",
+ "BDMAP_00003373",
+ "BDMAP_00000568",
+ "BDMAP_00001737",
+ "BDMAP_00002986",
+ "BDMAP_00000716",
+ "BDMAP_00003327",
+ "BDMAP_00000690",
+ "BDMAP_00000881",
+ "BDMAP_00004121",
+ "BDMAP_00002845",
+ "BDMAP_00004624",
+ "BDMAP_00003109",
+ "BDMAP_00004876",
+ "BDMAP_00005005",
+ "BDMAP_00003172",
+ "BDMAP_00001924",
+ "BDMAP_00005073",
+ "BDMAP_00003680",
+ "BDMAP_00000874",
+ "BDMAP_00000132",
+ "BDMAP_00001438",
+ "BDMAP_00004650",
+ "BDMAP_00005016",
+ "BDMAP_00002924",
+ "BDMAP_00002458",
+ "BDMAP_00000190",
+ "BDMAP_00003640",
+ "BDMAP_00001514",
+ "BDMAP_00003031",
+ "BDMAP_00001985",
+ "BDMAP_00004415",
+ "BDMAP_00001015",
+ "BDMAP_00014516",
+ "BDMAP_00014627",
+ "BDMAP_00014630",
+ "BDMAP_00014552",
+ "BDMAP_00014557",
+ "BDMAP_00014629",
+ "BDMAP_00014507",
+ "BDMAP_00014618",
+ "BDMAP_00014569",
+ "BDMAP_00014493",
+ "BDMAP_00014633",
+ "BDMAP_00014576",
+ "BDMAP_00014581",
+ "BDMAP_00014635",
+ "BDMAP_00014521",
+ "BDMAP_00014506",
+ "BDMAP_00014517",
+ "BDMAP_00014567",
+ "BDMAP_00014636",
+ "BDMAP_00014520",
+ "BDMAP_00014582",
+ "BDMAP_00014536",
+ "BDMAP_00014525",
+ "BDMAP_00014486",
+ "BDMAP_00014496",
+ "BDMAP_00014545",
+ "BDMAP_00014547",
+ "BDMAP_00014490",
+ "BDMAP_00014625",
+ "BDMAP_00014513",
+ "BDMAP_00014535",
+ "BDMAP_00014632",
+ "BDMAP_00014541",
+ "BDMAP_00014522",
+ "BDMAP_00014508",
+ "BDMAP_00014578",
+ "BDMAP_00014494",
+ "BDMAP_00014562",
+ "BDMAP_00014534",
+ "BDMAP_00014553",
+ "BDMAP_00014566",
+ "BDMAP_00014542",
+ "BDMAP_00014612",
+ "BDMAP_00014614",
+ "BDMAP_00014637",
+ "BDMAP_00014631",
+ "BDMAP_00014619",
+ "BDMAP_00014498",
+ "BDMAP_00014570",
+ "BDMAP_00014624",
+ "BDMAP_00014503",
+ "BDMAP_00014573",
+ "BDMAP_00014546",
+ "BDMAP_00014626",
+ "BDMAP_00014526",
+ "BDMAP_00014488",
+ "BDMAP_00014524",
+ "BDMAP_00014528",
+ "BDMAP_00014617",
+ "BDMAP_00014518",
+ "BDMAP_00014571",
+ "BDMAP_00014551",
+ "BDMAP_00014515",
+ "BDMAP_00014561",
+ "BDMAP_00014616",
+ "BDMAP_00014580",
+ "BDMAP_00014492",
+ "BDMAP_00014514",
+ "BDMAP_00014533",
+ "BDMAP_00014620",
+ "BDMAP_00014558",
+ "BDMAP_00014610",
+ "BDMAP_00014510",
+ "BDMAP_00014512",
+ "BDMAP_00014583",
+ "BDMAP_00014628",
+ "BDMAP_00014579",
+ "BDMAP_00014537",
+ "BDMAP_00014615",
+ "BDMAP_00014568",
+ "BDMAP_00014539",
+ "BDMAP_00014556",
+ "BDMAP_00014491",
+ "BDMAP_00014495",
+ "BDMAP_00014549",
+ "BDMAP_00014554",
+ "BDMAP_00014565",
+ "BDMAP_00014504",
+ "BDMAP_00014485",
+ "BDMAP_00014575",
+ "BDMAP_00014563",
+ "BDMAP_00014574",
+ "BDMAP_00014572",
+ "BDMAP_00014499",
+ "BDMAP_00014559",
+ "BDMAP_00014530",
+ "BDMAP_00014505",
+ "BDMAP_00014532",
+ "BDMAP_00014564",
+ "BDMAP_00014497",
+ "BDMAP_00014538",
+ "BDMAP_00014519",
+ "BDMAP_00014544",
+ "BDMAP_00014555",
+ "BDMAP_00014527",
+ "BDMAP_00014611",
+ "BDMAP_00014577",
+ "BDMAP_00014634",
+ "BDMAP_00014613",
+ "BDMAP_00014584",
+ "BDMAP_00014509",
+ "BDMAP_00014523",
+ "BDMAP_00014543",
+ "BDMAP_00014502",
+ "BDMAP_00014622",
+ "BDMAP_00014540",
+ "BDMAP_00014500",
+ "BDMAP_00014548",
+ "BDMAP_00014529",
+ "BDMAP_00014550",
+ "BDMAP_00014623",
+ "BDMAP_00014487",
+ "BDMAP_00014531",
+ "BDMAP_00014501",
+ "BDMAP_00014484",
+ "BDMAP_00014489",
+ "BDMAP_00014511",
+ "BDMAP_00014560",
+ "BDMAP_00014621",
+ "BDMAP_00022490",
+ "BDMAP_00022418",
+ "BDMAP_00022453",
+ "BDMAP_00022438",
+ "BDMAP_00022413",
+ "BDMAP_00022469",
+ "BDMAP_00022436",
+ "BDMAP_00022443",
+ "BDMAP_00022427",
+ "BDMAP_00022416",
+ "BDMAP_00022421",
+ "BDMAP_00022434",
+ "BDMAP_00022473",
+ "BDMAP_00022440",
+ "BDMAP_00022439",
+ "BDMAP_00022433",
+ "BDMAP_00022446",
+ "BDMAP_00022475",
+ "BDMAP_00022414",
+ "BDMAP_00022431",
+ "BDMAP_00022432",
+ "BDMAP_00022428",
+ "BDMAP_00022481",
+ "BDMAP_00022489",
+ "BDMAP_00022462",
+ "BDMAP_00022437",
+ "BDMAP_00022467",
+ "BDMAP_00022420",
+ "BDMAP_00022474",
+ "BDMAP_00022426",
+ "BDMAP_00022466",
+ "BDMAP_00022463",
+ "BDMAP_00022451",
+ "BDMAP_00022461",
+ "BDMAP_00022472",
+ "BDMAP_00022423",
+ "BDMAP_00022456",
+ "BDMAP_00022455",
+ "BDMAP_00022429",
+ "BDMAP_00022487",
+ "BDMAP_00022419",
+ "BDMAP_00022422",
+ "BDMAP_00022448",
+ "BDMAP_00022415",
+ "BDMAP_00022454",
+ "BDMAP_00022477",
+ "BDMAP_00022444",
+ "BDMAP_00022435",
+ "BDMAP_00022417",
+ "BDMAP_00022478",
+ "BDMAP_00022445",
+ "BDMAP_00022442",
+ "BDMAP_00022465",
+ "BDMAP_00022412",
+ "BDMAP_00022424",
+ "BDMAP_00022458"
+ ],
+ "val": [
+ "BDMAP_00000332",
+ "BDMAP_00004858",
+ "BDMAP_00005155",
+ "BDMAP_00001205",
+ "BDMAP_00004770",
+ "BDMAP_00001361",
+ "BDMAP_00002944",
+ "BDMAP_00003961",
+ "BDMAP_00000430",
+ "BDMAP_00000679",
+ "BDMAP_00003809",
+ "BDMAP_00004115",
+ "BDMAP_00003367",
+ "BDMAP_00002899",
+ "BDMAP_00003771",
+ "BDMAP_00003502",
+ "BDMAP_00001628",
+ "BDMAP_00003884",
+ "BDMAP_00005074",
+ "BDMAP_00003114",
+ "BDMAP_00004741",
+ "BDMAP_00001746",
+ "BDMAP_00002603",
+ "BDMAP_00004128",
+ "BDMAP_00000487",
+ "BDMAP_00002631",
+ "BDMAP_00002744",
+ "BDMAP_00000833",
+ "BDMAP_00002648",
+ "BDMAP_00000375",
+ "BDMAP_00000608",
+ "BDMAP_00001352",
+ "BDMAP_00002775",
+ "BDMAP_00002474",
+ "BDMAP_00000458",
+ "BDMAP_00000511",
+ "BDMAP_00003150",
+ "BDMAP_00000794",
+ "BDMAP_00001255",
+ "BDMAP_00002242",
+ "BDMAP_00003205",
+ "BDMAP_00002181",
+ "BDMAP_00003486",
+ "BDMAP_00004250",
+ "BDMAP_00002453",
+ "BDMAP_00003164",
+ "BDMAP_00004578",
+ "BDMAP_00001735",
+ "BDMAP_00004281",
+ "BDMAP_00003481",
+ "BDMAP_00001786",
+ "BDMAP_00000101",
+ "BDMAP_00001813",
+ "BDMAP_00000615",
+ "BDMAP_00003170",
+ "BDMAP_00004378",
+ "BDMAP_00004704",
+ "BDMAP_00003439",
+ "BDMAP_00002717",
+ "BDMAP_00001981",
+ "BDMAP_00000100",
+ "BDMAP_00001018",
+ "BDMAP_00002214",
+ "BDMAP_00001198",
+ "BDMAP_00001962",
+ "BDMAP_00002463",
+ "BDMAP_00005139",
+ "BDMAP_00000831",
+ "BDMAP_00002955",
+ "BDMAP_00003272",
+ "BDMAP_00000745",
+ "BDMAP_00000138",
+ "BDMAP_00000152",
+ "BDMAP_00000264",
+ "BDMAP_00000345",
+ "BDMAP_00000547",
+ "BDMAP_00001095",
+ "BDMAP_00001212",
+ "BDMAP_00001426",
+ "BDMAP_00001445",
+ "BDMAP_00001598",
+ "BDMAP_00001769",
+ "BDMAP_00001835",
+ "BDMAP_00001875",
+ "BDMAP_00002253",
+ "BDMAP_00002465",
+ "BDMAP_00002612",
+ "BDMAP_00002654",
+ "BDMAP_00003111",
+ "BDMAP_00003564",
+ "BDMAP_00003847",
+ "BDMAP_00003890",
+ "BDMAP_00003946",
+ "BDMAP_00004558",
+ "BDMAP_00004783",
+ "BDMAP_00005170",
+ "BDMAP_00014585",
+ "BDMAP_00014586",
+ "BDMAP_00014587",
+ "BDMAP_00014588",
+ "BDMAP_00014589",
+ "BDMAP_00014590",
+ "BDMAP_00014591",
+ "BDMAP_00014592",
+ "BDMAP_00014593",
+ "BDMAP_00014594",
+ "BDMAP_00014595",
+ "BDMAP_00014596",
+ "BDMAP_00014597",
+ "BDMAP_00014598",
+ "BDMAP_00014599",
+ "BDMAP_00014600",
+ "BDMAP_00014601",
+ "BDMAP_00014602",
+ "BDMAP_00014603",
+ "BDMAP_00014604",
+ "BDMAP_00014605",
+ "BDMAP_00014606",
+ "BDMAP_00014607",
+ "BDMAP_00014608",
+ "BDMAP_00014609",
+ "BDMAP_00022471",
+ "BDMAP_00022449",
+ "BDMAP_00022488",
+ "BDMAP_00022479",
+ "BDMAP_00022486",
+ "BDMAP_00022484",
+ "BDMAP_00022450",
+ "BDMAP_00022468",
+ "BDMAP_00022476",
+ "BDMAP_00022459",
+ "BDMAP_00022447",
+ "BDMAP_00022460",
+ "BDMAP_00022425",
+ "BDMAP_00022470",
+ "BDMAP_00022483",
+ "BDMAP_00022457",
+ "BDMAP_00022430",
+ "BDMAP_00022480",
+ "BDMAP_00022482",
+ "BDMAP_00022452",
+ "BDMAP_00022464",
+ "BDMAP_00022441",
+ "BDMAP_00022485"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all2.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all2.json
new file mode 100644
index 0000000000000000000000000000000000000000..2105815a1071a9c5d567c0cf4403c94138e2de89
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all2.json
@@ -0,0 +1,2208 @@
+[
+ {
+ "train": [
+ "BDMAP_00002376",
+ "BDMAP_00001520",
+ "BDMAP_00014542",
+ "BDMAP_00005168",
+ "BDMAP_00002720",
+ "BDMAP_00000549",
+ "BDMAP_00002221",
+ "BDMAP_00002353",
+ "BDMAP_00014502",
+ "BDMAP_00004345",
+ "BDMAP_00002342",
+ "BDMAP_00004384",
+ "BDMAP_00000978",
+ "BDMAP_00002665",
+ "BDMAP_00000802",
+ "BDMAP_00000980",
+ "BDMAP_00002496",
+ "BDMAP_00002380",
+ "BDMAP_00002881",
+ "BDMAP_00002831",
+ "BDMAP_00022463",
+ "BDMAP_00004415",
+ "BDMAP_00001458",
+ "BDMAP_00003525",
+ "BDMAP_00004359",
+ "BDMAP_00001419",
+ "BDMAP_00000347",
+ "BDMAP_00003152",
+ "BDMAP_00002055",
+ "BDMAP_00001987",
+ "BDMAP_00000336",
+ "BDMAP_00001791",
+ "BDMAP_00001225",
+ "BDMAP_00002051",
+ "BDMAP_00003451",
+ "BDMAP_00004066",
+ "BDMAP_00009779",
+ "BDMAP_00001802",
+ "BDMAP_00014539",
+ "BDMAP_00003168",
+ "BDMAP_00003429",
+ "BDMAP_00002171",
+ "BDMAP_00002260",
+ "BDMAP_00001744",
+ "BDMAP_00003514",
+ "BDMAP_00001640",
+ "BDMAP_00014633",
+ "BDMAP_00000844",
+ "BDMAP_00003508",
+ "BDMAP_00008568",
+ "BDMAP_00005009",
+ "BDMAP_00022416",
+ "BDMAP_00022453",
+ "BDMAP_00002580",
+ "BDMAP_00000848",
+ "BDMAP_00000569",
+ "BDMAP_00003028",
+ "BDMAP_00001950",
+ "BDMAP_00000640",
+ "BDMAP_00003666",
+ "BDMAP_00002661",
+ "BDMAP_00001868",
+ "BDMAP_00000305",
+ "BDMAP_00002444",
+ "BDMAP_00004184",
+ "BDMAP_00004407",
+ "BDMAP_00002117",
+ "BDMAP_00003822",
+ "BDMAP_00022437",
+ "BDMAP_00002396",
+ "BDMAP_00000484",
+ "BDMAP_00002199",
+ "BDMAP_00000023",
+ "BDMAP_00001619",
+ "BDMAP_00000447",
+ "BDMAP_00000643",
+ "BDMAP_00002060",
+ "BDMAP_00002417",
+ "BDMAP_00001322",
+ "BDMAP_00003252",
+ "BDMAP_00001721",
+ "BDMAP_00002930",
+ "BDMAP_00001233",
+ "BDMAP_00000363",
+ "BDMAP_00001920",
+ "BDMAP_00001944",
+ "BDMAP_00001906",
+ "BDMAP_00000480",
+ "BDMAP_00002080",
+ "BDMAP_00001830",
+ "BDMAP_00000062",
+ "BDMAP_00014520",
+ "BDMAP_00004031",
+ "BDMAP_00000462",
+ "BDMAP_00003722",
+ "BDMAP_00001107",
+ "BDMAP_00002501",
+ "BDMAP_00004722",
+ "BDMAP_00004995",
+ "BDMAP_00000117",
+ "BDMAP_00004604",
+ "BDMAP_00004928",
+ "BDMAP_00001690",
+ "BDMAP_00001247",
+ "BDMAP_00002359",
+ "BDMAP_00002167",
+ "BDMAP_00000265",
+ "BDMAP_00000283",
+ "BDMAP_00005030",
+ "BDMAP_00002849",
+ "BDMAP_00004259",
+ "BDMAP_00022446",
+ "BDMAP_00000698",
+ "BDMAP_00002216",
+ "BDMAP_00014562",
+ "BDMAP_00000382",
+ "BDMAP_00002347",
+ "BDMAP_00000271",
+ "BDMAP_00001796",
+ "BDMAP_00002791",
+ "BDMAP_00001703",
+ "BDMAP_00000533",
+ "BDMAP_00005092",
+ "BDMAP_00002425",
+ "BDMAP_00001562",
+ "BDMAP_00003447",
+ "BDMAP_00002448",
+ "BDMAP_00005103",
+ "BDMAP_00001451",
+ "BDMAP_00002289",
+ "BDMAP_00004315",
+ "BDMAP_00000587",
+ "BDMAP_00003531",
+ "BDMAP_00002127",
+ "BDMAP_00014536",
+ "BDMAP_00004199",
+ "BDMAP_00000810",
+ "BDMAP_00001977",
+ "BDMAP_00003717",
+ "BDMAP_00001379",
+ "BDMAP_00003930",
+ "BDMAP_00002803",
+ "BDMAP_00002389",
+ "BDMAP_00014617",
+ "BDMAP_00001517",
+ "BDMAP_00000330",
+ "BDMAP_00003422",
+ "BDMAP_00022433",
+ "BDMAP_00002762",
+ "BDMAP_00000687",
+ "BDMAP_00002133",
+ "BDMAP_00002152",
+ "BDMAP_00000968",
+ "BDMAP_00000030",
+ "BDMAP_00004030",
+ "BDMAP_00000862",
+ "BDMAP_00000032",
+ "BDMAP_00003898",
+ "BDMAP_00005175",
+ "BDMAP_00005005",
+ "BDMAP_00004211",
+ "BDMAP_00001800",
+ "BDMAP_00004910",
+ "BDMAP_00000454",
+ "BDMAP_00004450",
+ "BDMAP_00004491",
+ "BDMAP_00000839",
+ "BDMAP_00014634",
+ "BDMAP_00004327",
+ "BDMAP_00007561",
+ "BDMAP_00003411",
+ "BDMAP_00000449",
+ "BDMAP_00004163",
+ "BDMAP_00001633",
+ "BDMAP_00002211",
+ "BDMAP_00003264",
+ "BDMAP_00009277",
+ "BDMAP_00001732",
+ "BDMAP_00003762",
+ "BDMAP_00000309",
+ "BDMAP_00001408",
+ "BDMAP_00002488",
+ "BDMAP_00002233",
+ "BDMAP_00003324",
+ "BDMAP_00002924",
+ "BDMAP_00000112",
+ "BDMAP_00002091",
+ "BDMAP_00003438",
+ "BDMAP_00001057",
+ "BDMAP_00002022",
+ "BDMAP_00001077",
+ "BDMAP_00002931",
+ "BDMAP_00004437",
+ "BDMAP_00004148",
+ "BDMAP_00000167",
+ "BDMAP_00002991",
+ "BDMAP_00004303",
+ "BDMAP_00001246",
+ "BDMAP_00001575",
+ "BDMAP_00001104",
+ "BDMAP_00014531",
+ "BDMAP_00003412",
+ "BDMAP_00005162",
+ "BDMAP_00004487",
+ "BDMAP_00001313",
+ "BDMAP_00004023",
+ "BDMAP_00001539",
+ "BDMAP_00003194",
+ "BDMAP_00000984",
+ "BDMAP_00000175",
+ "BDMAP_00000010",
+ "BDMAP_00002153",
+ "BDMAP_00004154",
+ "BDMAP_00000836",
+ "BDMAP_00001858",
+ "BDMAP_00004897",
+ "BDMAP_00002278",
+ "BDMAP_00005157",
+ "BDMAP_00000204",
+ "BDMAP_00001221",
+ "BDMAP_00002258",
+ "BDMAP_00001511",
+ "BDMAP_00000583",
+ "BDMAP_00002524",
+ "BDMAP_00000446",
+ "BDMAP_00001092",
+ "BDMAP_00022421",
+ "BDMAP_00004339",
+ "BDMAP_00001624",
+ "BDMAP_00004049",
+ "BDMAP_00000009",
+ "BDMAP_00000646",
+ "BDMAP_00002220",
+ "BDMAP_00000324",
+ "BDMAP_00001865",
+ "BDMAP_00004297",
+ "BDMAP_00000571",
+ "BDMAP_00001026",
+ "BDMAP_00000355",
+ "BDMAP_00000120",
+ "BDMAP_00003735",
+ "BDMAP_00003361",
+ "BDMAP_00001183",
+ "BDMAP_00003400",
+ "BDMAP_00003897",
+ "BDMAP_00000542",
+ "BDMAP_00001894",
+ "BDMAP_00022438",
+ "BDMAP_00003228",
+ "BDMAP_00000396",
+ "BDMAP_00000498",
+ "BDMAP_00002394",
+ "BDMAP_00000540",
+ "BDMAP_00000464",
+ "BDMAP_00003767",
+ "BDMAP_00000620",
+ "BDMAP_00003815",
+ "BDMAP_00004416",
+ "BDMAP_00001015",
+ "BDMAP_00002854",
+ "BDMAP_00003121",
+ "BDMAP_00001711",
+ "BDMAP_00000301",
+ "BDMAP_00000273",
+ "BDMAP_00002403",
+ "BDMAP_00001731",
+ "BDMAP_00003513",
+ "BDMAP_00022429",
+ "BDMAP_00002401",
+ "BDMAP_00005001",
+ "BDMAP_00000400",
+ "BDMAP_00002507",
+ "BDMAP_00007524",
+ "BDMAP_00004956",
+ "BDMAP_00006533",
+ "BDMAP_00003979",
+ "BDMAP_00003816",
+ "BDMAP_00001200",
+ "BDMAP_00002184",
+ "BDMAP_00001219",
+ "BDMAP_00014577",
+ "BDMAP_00000713",
+ "BDMAP_00004198",
+ "BDMAP_00001078",
+ "BDMAP_00002146",
+ "BDMAP_00005067",
+ "BDMAP_00004867",
+ "BDMAP_00000616",
+ "BDMAP_00000476",
+ "BDMAP_00002170",
+ "BDMAP_00004855",
+ "BDMAP_00001208",
+ "BDMAP_00003143",
+ "BDMAP_00004878",
+ "BDMAP_00004888",
+ "BDMAP_00022481",
+ "BDMAP_00004212",
+ "BDMAP_00002527",
+ "BDMAP_00006534",
+ "BDMAP_00003932",
+ "BDMAP_00004982",
+ "BDMAP_00000667",
+ "BDMAP_00002920",
+ "BDMAP_00000088",
+ "BDMAP_00001753",
+ "BDMAP_00004605",
+ "BDMAP_00004903",
+ "BDMAP_00001930",
+ "BDMAP_00004830",
+ "BDMAP_00005167",
+ "BDMAP_00004286",
+ "BDMAP_00000529",
+ "BDMAP_00014504",
+ "BDMAP_00001093",
+ "BDMAP_00001831",
+ "BDMAP_00014548",
+ "BDMAP_00014535",
+ "BDMAP_00003483",
+ "BDMAP_00004165",
+ "BDMAP_00000162",
+ "BDMAP_00014528",
+ "BDMAP_00000548",
+ "BDMAP_00003733",
+ "BDMAP_00003440",
+ "BDMAP_00002582",
+ "BDMAP_00002970",
+ "BDMAP_00001877",
+ "BDMAP_00003031",
+ "BDMAP_00000491",
+ "BDMAP_00003140",
+ "BDMAP_00000219",
+ "BDMAP_00000963",
+ "BDMAP_00002570",
+ "BDMAP_00001907",
+ "BDMAP_00002901",
+ "BDMAP_00000098",
+ "BDMAP_00004108",
+ "BDMAP_00022455",
+ "BDMAP_00004150",
+ "BDMAP_00000815",
+ "BDMAP_00001947",
+ "BDMAP_00004414",
+ "BDMAP_00002918",
+ "BDMAP_00001309",
+ "BDMAP_00004624",
+ "BDMAP_00003336",
+ "BDMAP_00004528",
+ "BDMAP_00004895",
+ "BDMAP_00002828",
+ "BDMAP_00000178",
+ "BDMAP_00000603",
+ "BDMAP_00001913",
+ "BDMAP_00000913",
+ "BDMAP_00003319",
+ "BDMAP_00014566",
+ "BDMAP_00002552",
+ "BDMAP_00002305",
+ "BDMAP_00004408",
+ "BDMAP_00000936",
+ "BDMAP_00001464",
+ "BDMAP_00001431",
+ "BDMAP_00000250",
+ "BDMAP_00014501",
+ "BDMAP_00008617",
+ "BDMAP_00002264",
+ "BDMAP_00014624",
+ "BDMAP_00002505",
+ "BDMAP_00004175",
+ "BDMAP_00002583",
+ "BDMAP_00001268",
+ "BDMAP_00002143",
+ "BDMAP_00001416",
+ "BDMAP_00014532",
+ "BDMAP_00003072",
+ "BDMAP_00007822",
+ "BDMAP_00003390",
+ "BDMAP_00000508",
+ "BDMAP_00003141",
+ "BDMAP_00004838",
+ "BDMAP_00003638",
+ "BDMAP_00003373",
+ "BDMAP_00003869",
+ "BDMAP_00014611",
+ "BDMAP_00001612",
+ "BDMAP_00003195",
+ "BDMAP_00000368",
+ "BDMAP_00000254",
+ "BDMAP_00000245",
+ "BDMAP_00001302",
+ "BDMAP_00001676",
+ "BDMAP_00001752",
+ "BDMAP_00003245",
+ "BDMAP_00002431",
+ "BDMAP_00003579",
+ "BDMAP_00001362",
+ "BDMAP_00001456",
+ "BDMAP_00001607",
+ "BDMAP_00014574",
+ "BDMAP_00014619",
+ "BDMAP_00002011",
+ "BDMAP_00004980",
+ "BDMAP_00001242",
+ "BDMAP_00000149",
+ "BDMAP_00003337",
+ "BDMAP_00000805",
+ "BDMAP_00003008",
+ "BDMAP_00003032",
+ "BDMAP_00003848",
+ "BDMAP_00000398",
+ "BDMAP_00000565",
+ "BDMAP_00003744",
+ "BDMAP_00003268",
+ "BDMAP_00000201",
+ "BDMAP_00000373",
+ "BDMAP_00001500",
+ "BDMAP_00002029",
+ "BDMAP_00000192",
+ "BDMAP_00002419",
+ "BDMAP_00009876",
+ "BDMAP_00002422",
+ "BDMAP_00004796",
+ "BDMAP_00000719",
+ "BDMAP_00003415",
+ "BDMAP_00005174",
+ "BDMAP_00000434",
+ "BDMAP_00014510",
+ "BDMAP_00001513",
+ "BDMAP_00003484",
+ "BDMAP_00003443",
+ "BDMAP_00003052",
+ "BDMAP_00004294",
+ "BDMAP_00001504",
+ "BDMAP_00003857",
+ "BDMAP_00002579",
+ "BDMAP_00014497",
+ "BDMAP_00003619",
+ "BDMAP_00000001",
+ "BDMAP_00005169",
+ "BDMAP_00001766",
+ "BDMAP_00002451",
+ "BDMAP_00002981",
+ "BDMAP_00022419",
+ "BDMAP_00004529",
+ "BDMAP_00003777",
+ "BDMAP_00001064",
+ "BDMAP_00014635",
+ "BDMAP_00001277",
+ "BDMAP_00001055",
+ "BDMAP_00000249",
+ "BDMAP_00002000",
+ "BDMAP_00000971",
+ "BDMAP_00000090",
+ "BDMAP_00003199",
+ "BDMAP_00000146",
+ "BDMAP_00000807",
+ "BDMAP_00004552",
+ "BDMAP_00000423",
+ "BDMAP_00001360",
+ "BDMAP_00000106",
+ "BDMAP_00000941",
+ "BDMAP_00001188",
+ "BDMAP_00006181",
+ "BDMAP_00004373",
+ "BDMAP_00001261",
+ "BDMAP_00001023",
+ "BDMAP_00000641",
+ "BDMAP_00014547",
+ "BDMAP_00001833",
+ "BDMAP_00004328",
+ "BDMAP_00001288",
+ "BDMAP_00000488",
+ "BDMAP_00001777",
+ "BDMAP_00002086",
+ "BDMAP_00001749",
+ "BDMAP_00004954",
+ "BDMAP_00002326",
+ "BDMAP_00002182",
+ "BDMAP_00003910",
+ "BDMAP_00008555",
+ "BDMAP_00000210",
+ "BDMAP_00001880",
+ "BDMAP_00002331",
+ "BDMAP_00003172",
+ "BDMAP_00004735",
+ "BDMAP_00002379",
+ "BDMAP_00004549",
+ "BDMAP_00014513",
+ "BDMAP_00004017",
+ "BDMAP_00003971",
+ "BDMAP_00000310",
+ "BDMAP_00003364",
+ "BDMAP_00003215",
+ "BDMAP_00000270",
+ "BDMAP_00002464",
+ "BDMAP_00000160",
+ "BDMAP_00001705",
+ "BDMAP_00002484",
+ "BDMAP_00001602",
+ "BDMAP_00000416",
+ "BDMAP_00003629",
+ "BDMAP_00000366",
+ "BDMAP_00005165",
+ "BDMAP_00000304",
+ "BDMAP_00003294",
+ "BDMAP_00003206",
+ "BDMAP_00008828",
+ "BDMAP_00004479",
+ "BDMAP_00005537",
+ "BDMAP_00000552",
+ "BDMAP_00005078",
+ "BDMAP_00003113",
+ "BDMAP_00004027",
+ "BDMAP_00000868",
+ "BDMAP_00001122",
+ "BDMAP_00001708",
+ "BDMAP_00000555",
+ "BDMAP_00000656",
+ "BDMAP_00001678",
+ "BDMAP_00001476",
+ "BDMAP_00004927",
+ "BDMAP_00001905",
+ "BDMAP_00001495",
+ "BDMAP_00014540",
+ "BDMAP_00000124",
+ "BDMAP_00000104",
+ "BDMAP_00004737",
+ "BDMAP_00001583",
+ "BDMAP_00002340",
+ "BDMAP_00004106",
+ "BDMAP_00004598",
+ "BDMAP_00001996",
+ "BDMAP_00001794",
+ "BDMAP_00014543",
+ "BDMAP_00002479",
+ "BDMAP_00001027",
+ "BDMAP_00001892",
+ "BDMAP_00002407",
+ "BDMAP_00003631",
+ "BDMAP_00001425",
+ "BDMAP_00022465",
+ "BDMAP_00004773",
+ "BDMAP_00014627",
+ "BDMAP_00004917",
+ "BDMAP_00002166",
+ "BDMAP_00002292",
+ "BDMAP_00001803",
+ "BDMAP_00000086",
+ "BDMAP_00003603",
+ "BDMAP_00000477",
+ "BDMAP_00022456",
+ "BDMAP_00006043",
+ "BDMAP_00001441",
+ "BDMAP_00002075",
+ "BDMAP_00002290",
+ "BDMAP_00004652",
+ "BDMAP_00004016",
+ "BDMAP_00004496",
+ "BDMAP_00002884",
+ "BDMAP_00003200",
+ "BDMAP_00002798",
+ "BDMAP_00001402",
+ "BDMAP_00001075",
+ "BDMAP_00002298",
+ "BDMAP_00003435",
+ "BDMAP_00001263",
+ "BDMAP_00001035",
+ "BDMAP_00001737",
+ "BDMAP_00005138",
+ "BDMAP_00002382",
+ "BDMAP_00002495",
+ "BDMAP_00000342",
+ "BDMAP_00001622",
+ "BDMAP_00003861",
+ "BDMAP_00001952",
+ "BDMAP_00003680",
+ "BDMAP_00001004",
+ "BDMAP_00002198",
+ "BDMAP_00004343",
+ "BDMAP_00001427",
+ "BDMAP_00004772",
+ "BDMAP_00005148",
+ "BDMAP_00003615",
+ "BDMAP_00000939",
+ "BDMAP_00000528",
+ "BDMAP_00000753",
+ "BDMAP_00001175",
+ "BDMAP_00004968",
+ "BDMAP_00002546",
+ "BDMAP_00001024",
+ "BDMAP_00000981",
+ "BDMAP_00001310",
+ "BDMAP_00014564",
+ "BDMAP_00001490",
+ "BDMAP_00001251",
+ "BDMAP_00000596",
+ "BDMAP_00003326",
+ "BDMAP_00003827",
+ "BDMAP_00002571",
+ "BDMAP_00001228",
+ "BDMAP_00000896",
+ "BDMAP_00005077",
+ "BDMAP_00004104",
+ "BDMAP_00014494",
+ "BDMAP_00004331",
+ "BDMAP_00001296",
+ "BDMAP_00000681",
+ "BDMAP_00001929",
+ "BDMAP_00003444",
+ "BDMAP_00003051",
+ "BDMAP_00005097",
+ "BDMAP_00002368",
+ "BDMAP_00014575",
+ "BDMAP_00004926",
+ "BDMAP_00022417",
+ "BDMAP_00004295",
+ "BDMAP_00003363",
+ "BDMAP_00003479",
+ "BDMAP_00001422",
+ "BDMAP_00003236",
+ "BDMAP_00004616",
+ "BDMAP_00004550",
+ "BDMAP_00022475",
+ "BDMAP_00001923",
+ "BDMAP_00004499",
+ "BDMAP_00000059",
+ "BDMAP_00003396",
+ "BDMAP_00004489",
+ "BDMAP_00004815",
+ "BDMAP_00002933",
+ "BDMAP_00001784",
+ "BDMAP_00003882",
+ "BDMAP_00001939",
+ "BDMAP_00004288",
+ "BDMAP_00001596",
+ "BDMAP_00000546",
+ "BDMAP_00000255",
+ "BDMAP_00001982",
+ "BDMAP_00002021",
+ "BDMAP_00004068",
+ "BDMAP_00002194",
+ "BDMAP_00000311",
+ "BDMAP_00000035",
+ "BDMAP_00002481",
+ "BDMAP_00000432",
+ "BDMAP_00001094",
+ "BDMAP_00014534",
+ "BDMAP_00005547",
+ "BDMAP_00002713",
+ "BDMAP_00014560",
+ "BDMAP_00014489",
+ "BDMAP_00001102",
+ "BDMAP_00004712",
+ "BDMAP_00004158",
+ "BDMAP_00000706",
+ "BDMAP_00000742",
+ "BDMAP_00003918",
+ "BDMAP_00003330",
+ "BDMAP_00003297",
+ "BDMAP_00000080",
+ "BDMAP_00000471",
+ "BDMAP_00002902",
+ "BDMAP_00022458",
+ "BDMAP_00000039",
+ "BDMAP_00000437",
+ "BDMAP_00001618",
+ "BDMAP_00000232",
+ "BDMAP_00001099",
+ "BDMAP_00000036",
+ "BDMAP_00022413",
+ "BDMAP_00000607",
+ "BDMAP_00000657",
+ "BDMAP_00002033",
+ "BDMAP_00001736",
+ "BDMAP_00002823",
+ "BDMAP_00005898",
+ "BDMAP_00003207",
+ "BDMAP_00004196",
+ "BDMAP_00001413",
+ "BDMAP_00001635",
+ "BDMAP_00001530",
+ "BDMAP_00004316",
+ "BDMAP_00003952",
+ "BDMAP_00000012",
+ "BDMAP_00003358",
+ "BDMAP_00001209",
+ "BDMAP_00004536",
+ "BDMAP_00002349",
+ "BDMAP_00004843",
+ "BDMAP_00000915",
+ "BDMAP_00022462",
+ "BDMAP_00005120",
+ "BDMAP_00000122",
+ "BDMAP_00000843",
+ "BDMAP_00014618",
+ "BDMAP_00005166",
+ "BDMAP_00003281",
+ "BDMAP_00005154",
+ "BDMAP_00001285",
+ "BDMAP_00004847",
+ "BDMAP_00000686",
+ "BDMAP_00001001",
+ "BDMAP_00001857",
+ "BDMAP_00000874",
+ "BDMAP_00003976",
+ "BDMAP_00001218",
+ "BDMAP_00001910",
+ "BDMAP_00002712",
+ "BDMAP_00000408",
+ "BDMAP_00004293",
+ "BDMAP_00000362",
+ "BDMAP_00003129",
+ "BDMAP_00003959",
+ "BDMAP_00004738",
+ "BDMAP_00004077",
+ "BDMAP_00004943",
+ "BDMAP_00004510",
+ "BDMAP_00002083",
+ "BDMAP_00004673",
+ "BDMAP_00022445",
+ "BDMAP_00000321",
+ "BDMAP_00000604",
+ "BDMAP_00000159",
+ "BDMAP_00001429",
+ "BDMAP_00002698",
+ "BDMAP_00004146",
+ "BDMAP_00001260",
+ "BDMAP_00001192",
+ "BDMAP_00014555",
+ "BDMAP_00002285",
+ "BDMAP_00003614",
+ "BDMAP_00001460",
+ "BDMAP_00004527",
+ "BDMAP_00003657",
+ "BDMAP_00004183",
+ "BDMAP_00001978",
+ "BDMAP_00003427",
+ "BDMAP_00003073",
+ "BDMAP_00002442",
+ "BDMAP_00014613",
+ "BDMAP_00001088",
+ "BDMAP_00000754",
+ "BDMAP_00004923",
+ "BDMAP_00002104",
+ "BDMAP_00003746",
+ "BDMAP_00000163",
+ "BDMAP_00004669",
+ "BDMAP_00003553",
+ "BDMAP_00003312",
+ "BDMAP_00002262",
+ "BDMAP_00001776",
+ "BDMAP_00001561",
+ "BDMAP_00001540",
+ "BDMAP_00000837",
+ "BDMAP_00001759",
+ "BDMAP_00001343",
+ "BDMAP_00002111",
+ "BDMAP_00000998",
+ "BDMAP_00001332",
+ "BDMAP_00002977",
+ "BDMAP_00000033",
+ "BDMAP_00001041",
+ "BDMAP_00003895",
+ "BDMAP_00001772",
+ "BDMAP_00002617",
+ "BDMAP_00000225",
+ "BDMAP_00014500",
+ "BDMAP_00001549",
+ "BDMAP_00002638",
+ "BDMAP_00002793",
+ "BDMAP_00004627",
+ "BDMAP_00014578",
+ "BDMAP_00002381",
+ "BDMAP_00003658",
+ "BDMAP_00007579",
+ "BDMAP_00004130",
+ "BDMAP_00002716",
+ "BDMAP_00004398",
+ "BDMAP_00003791",
+ "BDMAP_00009022",
+ "BDMAP_00002328",
+ "BDMAP_00004296",
+ "BDMAP_00002383",
+ "BDMAP_00000262",
+ "BDMAP_00001701",
+ "BDMAP_00000410",
+ "BDMAP_00002176",
+ "BDMAP_00001860",
+ "BDMAP_00001740",
+ "BDMAP_00002500",
+ "BDMAP_00001898",
+ "BDMAP_00004325",
+ "BDMAP_00000767",
+ "BDMAP_00000851",
+ "BDMAP_00003320",
+ "BDMAP_00003973",
+ "BDMAP_00000918",
+ "BDMAP_00022426",
+ "BDMAP_00001571",
+ "BDMAP_00000989",
+ "BDMAP_00002804",
+ "BDMAP_00008389",
+ "BDMAP_00003074",
+ "BDMAP_00001471",
+ "BDMAP_00014491",
+ "BDMAP_00001762",
+ "BDMAP_00001266",
+ "BDMAP_00014514",
+ "BDMAP_00004457",
+ "BDMAP_00001806",
+ "BDMAP_00006036",
+ "BDMAP_00004615",
+ "BDMAP_00001096",
+ "BDMAP_00001421",
+ "BDMAP_00005114",
+ "BDMAP_00001465",
+ "BDMAP_00003493",
+ "BDMAP_00003672",
+ "BDMAP_00003463",
+ "BDMAP_00002653",
+ "BDMAP_00005546",
+ "BDMAP_00001985",
+ "BDMAP_00003758",
+ "BDMAP_00002250",
+ "BDMAP_00004664",
+ "BDMAP_00002203",
+ "BDMAP_00000788",
+ "BDMAP_00002710",
+ "BDMAP_00001518",
+ "BDMAP_00014615",
+ "BDMAP_00002808",
+ "BDMAP_00003510",
+ "BDMAP_00002943",
+ "BDMAP_00002049",
+ "BDMAP_00004264",
+ "BDMAP_00014503",
+ "BDMAP_00002304",
+ "BDMAP_00001817",
+ "BDMAP_00002158",
+ "BDMAP_00004195",
+ "BDMAP_00001045",
+ "BDMAP_00000081",
+ "BDMAP_00003327",
+ "BDMAP_00003642",
+ "BDMAP_00002095",
+ "BDMAP_00009738",
+ "BDMAP_00001050",
+ "BDMAP_00003116",
+ "BDMAP_00000965",
+ "BDMAP_00002067",
+ "BDMAP_00014626",
+ "BDMAP_00004193",
+ "BDMAP_00000418",
+ "BDMAP_00000626",
+ "BDMAP_00000660",
+ "BDMAP_00014565",
+ "BDMAP_00003193",
+ "BDMAP_00005063",
+ "BDMAP_00002439",
+ "BDMAP_00022477",
+ "BDMAP_00002719",
+ "BDMAP_00014614",
+ "BDMAP_00014545",
+ "BDMAP_00000824",
+ "BDMAP_00008128",
+ "BDMAP_00000043",
+ "BDMAP_00003520",
+ "BDMAP_00003972",
+ "BDMAP_00000517",
+ "BDMAP_00000695",
+ "BDMAP_00003359",
+ "BDMAP_00001822",
+ "BDMAP_00000744",
+ "BDMAP_00002937",
+ "BDMAP_00001286",
+ "BDMAP_00002040",
+ "BDMAP_00014493",
+ "BDMAP_00001751",
+ "BDMAP_00001376",
+ "BDMAP_00003832",
+ "BDMAP_00001971",
+ "BDMAP_00003392",
+ "BDMAP_00003900",
+ "BDMAP_00000522",
+ "BDMAP_00004368",
+ "BDMAP_00001407",
+ "BDMAP_00004231",
+ "BDMAP_00022434",
+ "BDMAP_00002310",
+ "BDMAP_00000564",
+ "BDMAP_00003697",
+ "BDMAP_00000926",
+ "BDMAP_00003409",
+ "BDMAP_00001502",
+ "BDMAP_00001187",
+ "BDMAP_00000935",
+ "BDMAP_00003070",
+ "BDMAP_00004682",
+ "BDMAP_00005108",
+ "BDMAP_00000799",
+ "BDMAP_00003955",
+ "BDMAP_00000931",
+ "BDMAP_00022427",
+ "BDMAP_00003683",
+ "BDMAP_00022442",
+ "BDMAP_00003183",
+ "BDMAP_00003277",
+ "BDMAP_00000771",
+ "BDMAP_00004901",
+ "BDMAP_00000977",
+ "BDMAP_00000139",
+ "BDMAP_00004253",
+ "BDMAP_00000293",
+ "BDMAP_00004347",
+ "BDMAP_00002492",
+ "BDMAP_00002173",
+ "BDMAP_00001370",
+ "BDMAP_00001563",
+ "BDMAP_00002178",
+ "BDMAP_00001440",
+ "BDMAP_00001227",
+ "BDMAP_00003038",
+ "BDMAP_00005717",
+ "BDMAP_00001921",
+ "BDMAP_00001545",
+ "BDMAP_00003230",
+ "BDMAP_00000812",
+ "BDMAP_00002129",
+ "BDMAP_00000420",
+ "BDMAP_00003190",
+ "BDMAP_00004990",
+ "BDMAP_00001222",
+ "BDMAP_00002387",
+ "BDMAP_00001457",
+ "BDMAP_00001826",
+ "BDMAP_00004493",
+ "BDMAP_00001319",
+ "BDMAP_00000344",
+ "BDMAP_00003381",
+ "BDMAP_00000452",
+ "BDMAP_00004887",
+ "BDMAP_00004074",
+ "BDMAP_00002201",
+ "BDMAP_00003261",
+ "BDMAP_00003776",
+ "BDMAP_00002675",
+ "BDMAP_00004745",
+ "BDMAP_00004052",
+ "BDMAP_00002909",
+ "BDMAP_00001564",
+ "BDMAP_00003957",
+ "BDMAP_00002390",
+ "BDMAP_00022422",
+ "BDMAP_00001836",
+ "BDMAP_00000756",
+ "BDMAP_00022478",
+ "BDMAP_00002864",
+ "BDMAP_00005186",
+ "BDMAP_00002248",
+ "BDMAP_00001644",
+ "BDMAP_00014622",
+ "BDMAP_00003774",
+ "BDMAP_00002243",
+ "BDMAP_00003560",
+ "BDMAP_00001805",
+ "BDMAP_00001845",
+ "BDMAP_00002227",
+ "BDMAP_00000642",
+ "BDMAP_00005016",
+ "BDMAP_00003721",
+ "BDMAP_00003650",
+ "BDMAP_00001632",
+ "BDMAP_00000923",
+ "BDMAP_00005185",
+ "BDMAP_00000492",
+ "BDMAP_00002321",
+ "BDMAP_00000481",
+ "BDMAP_00003640",
+ "BDMAP_00001420",
+ "BDMAP_00003808",
+ "BDMAP_00001949",
+ "BDMAP_00002042",
+ "BDMAP_00004764",
+ "BDMAP_00022448",
+ "BDMAP_00000518",
+ "BDMAP_00001298",
+ "BDMAP_00003719",
+ "BDMAP_00003506",
+ "BDMAP_00000285",
+ "BDMAP_00000388",
+ "BDMAP_00000634",
+ "BDMAP_00003036",
+ "BDMAP_00001862",
+ "BDMAP_00002573",
+ "BDMAP_00001521",
+ "BDMAP_00003529",
+ "BDMAP_00001126",
+ "BDMAP_00003543",
+ "BDMAP_00002043",
+ "BDMAP_00001912",
+ "BDMAP_00002728",
+ "BDMAP_00003457",
+ "BDMAP_00014505",
+ "BDMAP_00000709",
+ "BDMAP_00002235",
+ "BDMAP_00001103",
+ "BDMAP_00003394",
+ "BDMAP_00002928",
+ "BDMAP_00002205",
+ "BDMAP_00002164",
+ "BDMAP_00004260",
+ "BDMAP_00004866",
+ "BDMAP_00001461",
+ "BDMAP_00000394",
+ "BDMAP_00003530",
+ "BDMAP_00001241",
+ "BDMAP_00003300",
+ "BDMAP_00003465",
+ "BDMAP_00001638",
+ "BDMAP_00003219",
+ "BDMAP_00003343",
+ "BDMAP_00000215",
+ "BDMAP_00003307",
+ "BDMAP_00003441",
+ "BDMAP_00022487",
+ "BDMAP_00002012",
+ "BDMAP_00001620",
+ "BDMAP_00001863",
+ "BDMAP_00002834",
+ "BDMAP_00000229",
+ "BDMAP_00001580",
+ "BDMAP_00004719",
+ "BDMAP_00003752",
+ "BDMAP_00000882",
+ "BDMAP_00002840",
+ "BDMAP_00005141",
+ "BDMAP_00002313",
+ "BDMAP_00001747",
+ "BDMAP_00001324",
+ "BDMAP_00000751",
+ "BDMAP_00002244",
+ "BDMAP_00003357",
+ "BDMAP_00001397",
+ "BDMAP_00000369",
+ "BDMAP_00000558",
+ "BDMAP_00004763",
+ "BDMAP_00000849",
+ "BDMAP_00000469",
+ "BDMAP_00000859",
+ "BDMAP_00000942",
+ "BDMAP_00001444",
+ "BDMAP_00002410",
+ "BDMAP_00004304",
+ "BDMAP_00000711",
+ "BDMAP_00002472",
+ "BDMAP_00001544",
+ "BDMAP_00005105",
+ "BDMAP_00002271",
+ "BDMAP_00014518",
+ "BDMAP_00003853",
+ "BDMAP_00014567",
+ "BDMAP_00000773",
+ "BDMAP_00003260",
+ "BDMAP_00000069",
+ "BDMAP_00004012",
+ "BDMAP_00003580",
+ "BDMAP_00002204",
+ "BDMAP_00003087",
+ "BDMAP_00004992",
+ "BDMAP_00004588",
+ "BDMAP_00001516",
+ "BDMAP_00001637",
+ "BDMAP_00002096",
+ "BDMAP_00001473",
+ "BDMAP_00001842",
+ "BDMAP_00002147",
+ "BDMAP_00004609",
+ "BDMAP_00000356",
+ "BDMAP_00014554",
+ "BDMAP_00004216",
+ "BDMAP_00003849",
+ "BDMAP_00014571",
+ "BDMAP_00003158",
+ "BDMAP_00004262",
+ "BDMAP_00000778",
+ "BDMAP_00014516",
+ "BDMAP_00003749",
+ "BDMAP_00002099",
+ "BDMAP_00000541",
+ "BDMAP_00003133",
+ "BDMAP_00002191",
+ "BDMAP_00000240",
+ "BDMAP_00022424",
+ "BDMAP_00001059",
+ "BDMAP_00001323",
+ "BDMAP_00000417",
+ "BDMAP_00014623",
+ "BDMAP_00002057",
+ "BDMAP_00002355",
+ "BDMAP_00007629",
+ "BDMAP_00014637",
+ "BDMAP_00006713",
+ "BDMAP_00002017",
+ "BDMAP_00003356",
+ "BDMAP_00014580",
+ "BDMAP_00003257",
+ "BDMAP_00000389",
+ "BDMAP_00001999",
+ "BDMAP_00003004",
+ "BDMAP_00000828",
+ "BDMAP_00002574",
+ "BDMAP_00004744",
+ "BDMAP_00001945",
+ "BDMAP_00008084",
+ "BDMAP_00002108",
+ "BDMAP_00008526",
+ "BDMAP_00004509",
+ "BDMAP_00002871",
+ "BDMAP_00014490",
+ "BDMAP_00002275",
+ "BDMAP_00003601",
+ "BDMAP_00000499",
+ "BDMAP_00003998",
+ "BDMAP_00001328",
+ "BDMAP_00001804",
+ "BDMAP_00000827",
+ "BDMAP_00001184",
+ "BDMAP_00001553",
+ "BDMAP_00008085",
+ "BDMAP_00000855",
+ "BDMAP_00014628",
+ "BDMAP_00003376",
+ "BDMAP_00004459",
+ "BDMAP_00000329",
+ "BDMAP_00002545",
+ "BDMAP_00002456",
+ "BDMAP_00001809",
+ "BDMAP_00000233",
+ "BDMAP_00002309",
+ "BDMAP_00001168",
+ "BDMAP_00004922",
+ "BDMAP_00000574",
+ "BDMAP_00001070",
+ "BDMAP_00001873",
+ "BDMAP_00000618",
+ "BDMAP_00004991",
+ "BDMAP_00001410",
+ "BDMAP_00001117",
+ "BDMAP_00003867",
+ "BDMAP_00003727",
+ "BDMAP_00000972",
+ "BDMAP_00001946",
+ "BDMAP_00014631",
+ "BDMAP_00004641",
+ "BDMAP_00000044",
+ "BDMAP_00004636",
+ "BDMAP_00014552",
+ "BDMAP_00002833",
+ "BDMAP_00001699",
+ "BDMAP_00004856",
+ "BDMAP_00001254",
+ "BDMAP_00001677",
+ "BDMAP_00000920",
+ "BDMAP_00003054",
+ "BDMAP_00000161",
+ "BDMAP_00003177",
+ "BDMAP_00001237",
+ "BDMAP_00001590",
+ "BDMAP_00001631",
+ "BDMAP_00001305",
+ "BDMAP_00002106",
+ "BDMAP_00005113",
+ "BDMAP_00003250",
+ "BDMAP_00001649",
+ "BDMAP_00001841",
+ "BDMAP_00014636",
+ "BDMAP_00002234",
+ "BDMAP_00001325",
+ "BDMAP_00002889",
+ "BDMAP_00001480",
+ "BDMAP_00003646",
+ "BDMAP_00000716",
+ "BDMAP_00004013",
+ "BDMAP_00002105",
+ "BDMAP_00000084",
+ "BDMAP_00000653",
+ "BDMAP_00000428",
+ "BDMAP_00000185",
+ "BDMAP_00000792",
+ "BDMAP_00000725",
+ "BDMAP_00004886",
+ "BDMAP_00000188",
+ "BDMAP_00001639",
+ "BDMAP_00004625",
+ "BDMAP_00002511",
+ "BDMAP_00022435",
+ "BDMAP_00008306",
+ "BDMAP_00004129",
+ "BDMAP_00003664",
+ "BDMAP_00000438",
+ "BDMAP_00000169",
+ "BDMAP_00005500",
+ "BDMAP_00002509",
+ "BDMAP_00001230",
+ "BDMAP_00002120",
+ "BDMAP_00004793",
+ "BDMAP_00001089",
+ "BDMAP_00000834",
+ "BDMAP_00000239",
+ "BDMAP_00005020",
+ "BDMAP_00003824",
+ "BDMAP_00002135",
+ "BDMAP_00001688",
+ "BDMAP_00001236",
+ "BDMAP_00000327",
+ "BDMAP_00005171",
+ "BDMAP_00002596",
+ "BDMAP_00003197",
+ "BDMAP_00014569",
+ "BDMAP_00022431",
+ "BDMAP_00003184",
+ "BDMAP_00014523",
+ "BDMAP_00004850",
+ "BDMAP_00002050",
+ "BDMAP_00003117",
+ "BDMAP_00003220",
+ "BDMAP_00001483",
+ "BDMAP_00002990",
+ "BDMAP_00001614",
+ "BDMAP_00000671",
+ "BDMAP_00000961",
+ "BDMAP_00003893",
+ "BDMAP_00003833",
+ "BDMAP_00001970",
+ "BDMAP_00002434",
+ "BDMAP_00002190",
+ "BDMAP_00000987",
+ "BDMAP_00002695",
+ "BDMAP_00000732",
+ "BDMAP_00001340",
+ "BDMAP_00004467",
+ "BDMAP_00000319",
+ "BDMAP_00003576",
+ "BDMAP_00001411",
+ "BDMAP_00001316",
+ "BDMAP_00000263",
+ "BDMAP_00000584",
+ "BDMAP_00003889",
+ "BDMAP_00000956",
+ "BDMAP_00002318",
+ "BDMAP_00001908",
+ "BDMAP_00002475",
+ "BDMAP_00001341",
+ "BDMAP_00000666",
+ "BDMAP_00002655",
+ "BDMAP_00005017",
+ "BDMAP_00004925",
+ "BDMAP_00001634",
+ "BDMAP_00000258",
+ "BDMAP_00001351",
+ "BDMAP_00000052",
+ "BDMAP_00001807",
+ "BDMAP_00000661",
+ "BDMAP_00001378",
+ "BDMAP_00002322",
+ "BDMAP_00001167",
+ "BDMAP_00001917",
+ "BDMAP_00004503",
+ "BDMAP_00000694",
+ "BDMAP_00001524",
+ "BDMAP_00005753",
+ "BDMAP_00001559",
+ "BDMAP_00001438",
+ "BDMAP_00002251",
+ "BDMAP_00003590",
+ "BDMAP_00005099",
+ "BDMAP_00001193",
+ "BDMAP_00003839",
+ "BDMAP_00005046",
+ "BDMAP_00002487",
+ "BDMAP_00001647",
+ "BDMAP_00014632",
+ "BDMAP_00000692",
+ "BDMAP_00022466",
+ "BDMAP_00001154",
+ "BDMAP_00001565",
+ "BDMAP_00004121",
+ "BDMAP_00000921",
+ "BDMAP_00003682",
+ "BDMAP_00000699",
+ "BDMAP_00004825",
+ "BDMAP_00002437",
+ "BDMAP_00014550",
+ "BDMAP_00003923",
+ "BDMAP_00001071",
+ "BDMAP_00001275",
+ "BDMAP_00014576",
+ "BDMAP_00003255",
+ "BDMAP_00003633",
+ "BDMAP_00001710",
+ "BDMAP_00000034",
+ "BDMAP_00003886",
+ "BDMAP_00003491",
+ "BDMAP_00004600",
+ "BDMAP_00004048",
+ "BDMAP_00002485",
+ "BDMAP_00005075",
+ "BDMAP_00022439",
+ "BDMAP_00004771",
+ "BDMAP_00005021",
+ "BDMAP_00002523",
+ "BDMAP_00004671",
+ "BDMAP_00004541",
+ "BDMAP_00000154",
+ "BDMAP_00014521",
+ "BDMAP_00000917",
+ "BDMAP_00001839",
+ "BDMAP_00005140",
+ "BDMAP_00002498",
+ "BDMAP_00004876",
+ "BDMAP_00002288",
+ "BDMAP_00000568",
+ "BDMAP_00001368",
+ "BDMAP_00003385",
+ "BDMAP_00003138",
+ "BDMAP_00014621",
+ "BDMAP_00000510",
+ "BDMAP_00004581",
+ "BDMAP_00002295",
+ "BDMAP_00014572",
+ "BDMAP_00000741",
+ "BDMAP_00003723",
+ "BDMAP_00001801",
+ "BDMAP_00001453",
+ "BDMAP_00004417",
+ "BDMAP_00000465",
+ "BDMAP_00003713",
+ "BDMAP_00001799",
+ "BDMAP_00002027",
+ "BDMAP_00001556",
+ "BDMAP_00000601",
+ "BDMAP_00001995",
+ "BDMAP_00000506",
+ "BDMAP_00000983",
+ "BDMAP_00000982",
+ "BDMAP_00003736",
+ "BDMAP_00004224",
+ "BDMAP_00004374",
+ "BDMAP_00001870",
+ "BDMAP_00002906",
+ "BDMAP_00022415",
+ "BDMAP_00000544",
+ "BDMAP_00003019",
+ "BDMAP_00003949",
+ "BDMAP_00000087",
+ "BDMAP_00002690",
+ "BDMAP_00005037",
+ "BDMAP_00003256",
+ "BDMAP_00002306",
+ "BDMAP_00000176",
+ "BDMAP_00007159",
+ "BDMAP_00004508",
+ "BDMAP_00003253",
+ "BDMAP_00022490",
+ "BDMAP_00001997",
+ "BDMAP_00004817",
+ "BDMAP_00000611",
+ "BDMAP_00000377",
+ "BDMAP_00001339",
+ "BDMAP_00001697",
+ "BDMAP_00004620",
+ "BDMAP_00002319",
+ "BDMAP_00001789",
+ "BDMAP_00001782",
+ "BDMAP_00005081",
+ "BDMAP_00004087",
+ "BDMAP_00000881",
+ "BDMAP_00002361",
+ "BDMAP_00000916",
+ "BDMAP_00002688",
+ "BDMAP_00003035",
+ "BDMAP_00003947",
+ "BDMAP_00002126",
+ "BDMAP_00000436",
+ "BDMAP_00004575",
+ "BDMAP_00001239",
+ "BDMAP_00001108",
+ "BDMAP_00003806",
+ "BDMAP_00002619",
+ "BDMAP_00001489",
+ "BDMAP_00014579",
+ "BDMAP_00003956",
+ "BDMAP_00002333",
+ "BDMAP_00000486",
+ "BDMAP_00000102",
+ "BDMAP_00000513",
+ "BDMAP_00002929",
+ "BDMAP_00003002",
+ "BDMAP_00014561",
+ "BDMAP_00004389",
+ "BDMAP_00022454",
+ "BDMAP_00001105",
+ "BDMAP_00004228",
+ "BDMAP_00002267",
+ "BDMAP_00001581",
+ "BDMAP_00004693",
+ "BDMAP_00001706",
+ "BDMAP_00001112",
+ "BDMAP_00001066",
+ "BDMAP_00004462",
+ "BDMAP_00001025",
+ "BDMAP_00004633",
+ "BDMAP_00007398",
+ "BDMAP_00002807",
+ "BDMAP_00002232",
+ "BDMAP_00004209",
+ "BDMAP_00000256",
+ "BDMAP_00003781",
+ "BDMAP_00003574",
+ "BDMAP_00000435",
+ "BDMAP_00003911",
+ "BDMAP_00001998",
+ "BDMAP_00002087",
+ "BDMAP_00006148",
+ "BDMAP_00000902",
+ "BDMAP_00002677",
+ "BDMAP_00004841",
+ "BDMAP_00014610",
+ "BDMAP_00022444",
+ "BDMAP_00001779",
+ "BDMAP_00002254",
+ "BDMAP_00014538",
+ "BDMAP_00014495",
+ "BDMAP_00000632",
+ "BDMAP_00002656",
+ "BDMAP_00001557",
+ "BDMAP_00002041",
+ "BDMAP_00004746",
+ "BDMAP_00004759",
+ "BDMAP_00000614",
+ "BDMAP_00003153",
+ "BDMAP_00001443",
+ "BDMAP_00001065",
+ "BDMAP_00001273",
+ "BDMAP_00001335",
+ "BDMAP_00014484",
+ "BDMAP_00000276",
+ "BDMAP_00000358",
+ "BDMAP_00004592",
+ "BDMAP_00002265",
+ "BDMAP_00002257",
+ "BDMAP_00002408",
+ "BDMAP_00000121",
+ "BDMAP_00003701",
+ "BDMAP_00002846",
+ "BDMAP_00000196",
+ "BDMAP_00001522",
+ "BDMAP_00005150",
+ "BDMAP_00003499",
+ "BDMAP_00004278",
+ "BDMAP_00000153",
+ "BDMAP_00003841",
+ "BDMAP_00014508",
+ "BDMAP_00004736",
+ "BDMAP_00014546",
+ "BDMAP_00000234",
+ "BDMAP_00001507",
+ "BDMAP_00000186",
+ "BDMAP_00004033",
+ "BDMAP_00004717",
+ "BDMAP_00001396",
+ "BDMAP_00002077",
+ "BDMAP_00000940",
+ "BDMAP_00001333",
+ "BDMAP_00006569",
+ "BDMAP_00004350",
+ "BDMAP_00001258",
+ "BDMAP_00000602",
+ "BDMAP_00000648",
+ "BDMAP_00003425",
+ "BDMAP_00001867",
+ "BDMAP_00002458",
+ "BDMAP_00002616",
+ "BDMAP_00003301",
+ "BDMAP_00002282",
+ "BDMAP_00003798",
+ "BDMAP_00000091",
+ "BDMAP_00007665",
+ "BDMAP_00000365",
+ "BDMAP_00014511",
+ "BDMAP_00001238",
+ "BDMAP_00001663",
+ "BDMAP_00003600",
+ "BDMAP_00001924",
+ "BDMAP_00002689",
+ "BDMAP_00022443",
+ "BDMAP_00002230",
+ "BDMAP_00001028",
+ "BDMAP_00003347",
+ "BDMAP_00000924",
+ "BDMAP_00004880",
+ "BDMAP_00004809",
+ "BDMAP_00014506",
+ "BDMAP_00000690",
+ "BDMAP_00000391",
+ "BDMAP_00001584",
+ "BDMAP_00002018",
+ "BDMAP_00001605",
+ "BDMAP_00002460",
+ "BDMAP_00005085",
+ "BDMAP_00000442",
+ "BDMAP_00001141",
+ "BDMAP_00005151",
+ "BDMAP_00000883",
+ "BDMAP_00002085",
+ "BDMAP_00001003",
+ "BDMAP_00004447",
+ "BDMAP_00005160",
+ "BDMAP_00003509",
+ "BDMAP_00000871",
+ "BDMAP_00022440",
+ "BDMAP_00002446",
+ "BDMAP_00000867",
+ "BDMAP_00000013",
+ "BDMAP_00001889",
+ "BDMAP_00001707",
+ "BDMAP_00004405",
+ "BDMAP_00003634",
+ "BDMAP_00002185",
+ "BDMAP_00001918",
+ "BDMAP_00000359",
+ "BDMAP_00000714",
+ "BDMAP_00000572",
+ "BDMAP_00001283",
+ "BDMAP_00002188",
+ "BDMAP_00000582",
+ "BDMAP_00000908",
+ "BDMAP_00004870",
+ "BDMAP_00003612",
+ "BDMAP_00001589",
+ "BDMAP_00000133",
+ "BDMAP_00003592",
+ "BDMAP_00002562",
+ "BDMAP_00000649",
+ "BDMAP_00014507",
+ "BDMAP_00000740",
+ "BDMAP_00014620",
+ "BDMAP_00003811",
+ "BDMAP_00004181",
+ "BDMAP_00004869",
+ "BDMAP_00000943",
+ "BDMAP_00014630",
+ "BDMAP_00003711",
+ "BDMAP_00003812",
+ "BDMAP_00002362",
+ "BDMAP_00002711",
+ "BDMAP_00002708",
+ "BDMAP_00000668",
+ "BDMAP_00014509",
+ "BDMAP_00002936",
+ "BDMAP_00001853",
+ "BDMAP_00003461",
+ "BDMAP_00004804",
+ "BDMAP_00004885",
+ "BDMAP_00002518",
+ "BDMAP_00001033",
+ "BDMAP_00002175",
+ "BDMAP_00000331",
+ "BDMAP_00001067",
+ "BDMAP_00002805",
+ "BDMAP_00000715",
+ "BDMAP_00022474",
+ "BDMAP_00001432",
+ "BDMAP_00002806",
+ "BDMAP_00014492",
+ "BDMAP_00004586",
+ "BDMAP_00005130",
+ "BDMAP_00001768",
+ "BDMAP_00002335",
+ "BDMAP_00001823",
+ "BDMAP_00002598",
+ "BDMAP_00000853",
+ "BDMAP_00000803",
+ "BDMAP_00001109",
+ "BDMAP_00004651",
+ "BDMAP_00002122",
+ "BDMAP_00000214",
+ "BDMAP_00002005",
+ "BDMAP_00002737",
+ "BDMAP_00004460",
+ "BDMAP_00001896",
+ "BDMAP_00002896",
+ "BDMAP_00004317",
+ "BDMAP_00001072",
+ "BDMAP_00003963",
+ "BDMAP_00003239",
+ "BDMAP_00005083",
+ "BDMAP_00001851",
+ "BDMAP_00003225",
+ "BDMAP_00000128",
+ "BDMAP_00001252",
+ "BDMAP_00002421",
+ "BDMAP_00003034",
+ "BDMAP_00000951",
+ "BDMAP_00004101",
+ "BDMAP_00002411",
+ "BDMAP_00002426",
+ "BDMAP_00002760",
+ "BDMAP_00003240",
+ "BDMAP_00022418",
+ "BDMAP_00002609",
+ "BDMAP_00003287",
+ "BDMAP_00004808",
+ "BDMAP_00001125",
+ "BDMAP_00003685",
+ "BDMAP_00000457",
+ "BDMAP_00002468",
+ "BDMAP_00005064",
+ "BDMAP_00001720",
+ "BDMAP_00014551",
+ "BDMAP_00000758",
+ "BDMAP_00014582",
+ "BDMAP_00001211",
+ "BDMAP_00003551",
+ "BDMAP_00000623",
+ "BDMAP_00004829",
+ "BDMAP_00001664",
+ "BDMAP_00000037",
+ "BDMAP_00001636",
+ "BDMAP_00002663",
+ "BDMAP_00002440",
+ "BDMAP_00014616",
+ "BDMAP_00022461",
+ "BDMAP_00001486",
+ "BDMAP_00002052",
+ "BDMAP_00004780",
+ "BDMAP_00000008",
+ "BDMAP_00000927",
+ "BDMAP_00004727",
+ "BDMAP_00014556",
+ "BDMAP_00003244",
+ "BDMAP_00002471",
+ "BDMAP_00000429",
+ "BDMAP_00004979",
+ "BDMAP_00002951",
+ "BDMAP_00000241",
+ "BDMAP_00001265",
+ "BDMAP_00001375",
+ "BDMAP_00000890",
+ "BDMAP_00002966",
+ "BDMAP_00002626",
+ "BDMAP_00004679",
+ "BDMAP_00003598",
+ "BDMAP_00014486",
+ "BDMAP_00003299",
+ "BDMAP_00001134",
+ "BDMAP_00002746",
+ "BDMAP_00001543",
+ "BDMAP_00003109",
+ "BDMAP_00014581",
+ "BDMAP_00001869",
+ "BDMAP_00002845",
+ "BDMAP_00014573",
+ "BDMAP_00004998",
+ "BDMAP_00002851",
+ "BDMAP_00000676",
+ "BDMAP_00002748",
+ "BDMAP_00001434",
+ "BDMAP_00004257",
+ "BDMAP_00022469",
+ "BDMAP_00014544",
+ "BDMAP_00014530",
+ "BDMAP_00002699",
+ "BDMAP_00001629",
+ "BDMAP_00001114",
+ "BDMAP_00004645",
+ "BDMAP_00002076",
+ "BDMAP_00008829",
+ "BDMAP_00003203",
+ "BDMAP_00000282",
+ "BDMAP_00001689",
+ "BDMAP_00002581",
+ "BDMAP_00004481",
+ "BDMAP_00022423",
+ "BDMAP_00004511",
+ "BDMAP_00014512",
+ "BDMAP_00002039",
+ "BDMAP_00000701",
+ "BDMAP_00004839",
+ "BDMAP_00002466",
+ "BDMAP_00014526",
+ "BDMAP_00005444",
+ "BDMAP_00004475",
+ "BDMAP_00003535",
+ "BDMAP_00014499",
+ "BDMAP_00003823",
+ "BDMAP_00004639",
+ "BDMAP_00000826",
+ "BDMAP_00001685",
+ "BDMAP_00001085",
+ "BDMAP_00002186",
+ "BDMAP_00001359",
+ "BDMAP_00007200",
+ "BDMAP_00014584",
+ "BDMAP_00004011",
+ "BDMAP_00004650",
+ "BDMAP_00002065",
+ "BDMAP_00000333",
+ "BDMAP_00001656",
+ "BDMAP_00001692",
+ "BDMAP_00000053",
+ "BDMAP_00007838",
+ "BDMAP_00004427",
+ "BDMAP_00001020",
+ "BDMAP_00002084",
+ "BDMAP_00001783",
+ "BDMAP_00014487",
+ "BDMAP_00003497",
+ "BDMAP_00004834",
+ "BDMAP_00002226",
+ "BDMAP_00002045",
+ "BDMAP_00014537",
+ "BDMAP_00002758",
+ "BDMAP_00003549",
+ "BDMAP_00001840",
+ "BDMAP_00004268",
+ "BDMAP_00002993",
+ "BDMAP_00005152",
+ "BDMAP_00006623",
+ "BDMAP_00001215",
+ "BDMAP_00000279",
+ "BDMAP_00004187",
+ "BDMAP_00014515",
+ "BDMAP_00004229",
+ "BDMAP_00014525",
+ "BDMAP_00000197",
+ "BDMAP_00000340",
+ "BDMAP_00022412",
+ "BDMAP_00000562",
+ "BDMAP_00004144",
+ "BDMAP_00000466",
+ "BDMAP_00003258",
+ "BDMAP_00003377",
+ "BDMAP_00000748",
+ "BDMAP_00014488",
+ "BDMAP_00000207",
+ "BDMAP_00003840",
+ "BDMAP_00001475",
+ "BDMAP_00002066",
+ "BDMAP_00001957",
+ "BDMAP_00000006",
+ "BDMAP_00002863",
+ "BDMAP_00003984",
+ "BDMAP_00002315",
+ "BDMAP_00001548",
+ "BDMAP_00014612",
+ "BDMAP_00002948",
+ "BDMAP_00003524",
+ "BDMAP_00001272",
+ "BDMAP_00004420",
+ "BDMAP_00004579",
+ "BDMAP_00022451",
+ "BDMAP_00001550",
+ "BDMAP_00000414",
+ "BDMAP_00003406",
+ "BDMAP_00002592",
+ "BDMAP_00003151",
+ "BDMAP_00001519",
+ "BDMAP_00002986",
+ "BDMAP_00022473",
+ "BDMAP_00002252",
+ "BDMAP_00004844",
+ "BDMAP_00004065",
+ "BDMAP_00000259",
+ "BDMAP_00022432",
+ "BDMAP_00000190",
+ "BDMAP_00000947",
+ "BDMAP_00000244",
+ "BDMAP_00001390",
+ "BDMAP_00002723",
+ "BDMAP_00004083",
+ "BDMAP_00004969",
+ "BDMAP_00004395",
+ "BDMAP_00000809",
+ "BDMAP_00004147",
+ "BDMAP_00002332",
+ "BDMAP_00005073",
+ "BDMAP_00005399",
+ "BDMAP_00001911",
+ "BDMAP_00003694",
+ "BDMAP_00005192",
+ "BDMAP_00001079",
+ "BDMAP_00004702",
+ "BDMAP_00004561",
+ "BDMAP_00001927",
+ "BDMAP_00008525",
+ "BDMAP_00002959",
+ "BDMAP_00000113",
+ "BDMAP_00014583",
+ "BDMAP_00002504",
+ "BDMAP_00001474",
+ "BDMAP_00004597",
+ "BDMAP_00000489",
+ "BDMAP_00004397",
+ "BDMAP_00002718",
+ "BDMAP_00002432",
+ "BDMAP_00003994",
+ "BDMAP_00000376",
+ "BDMAP_00002103",
+ "BDMAP_00004102",
+ "BDMAP_00005022",
+ "BDMAP_00002945",
+ "BDMAP_00001185",
+ "BDMAP_00002354",
+ "BDMAP_00003178",
+ "BDMAP_00004372",
+ "BDMAP_00001119",
+ "BDMAP_00000038",
+ "BDMAP_00014529",
+ "BDMAP_00001133",
+ "BDMAP_00005198",
+ "BDMAP_00002856",
+ "BDMAP_00001383",
+ "BDMAP_00004349",
+ "BDMAP_00001891",
+ "BDMAP_00003128",
+ "BDMAP_00007259",
+ "BDMAP_00000205",
+ "BDMAP_00004208",
+ "BDMAP_00001903",
+ "BDMAP_00004672",
+ "BDMAP_00008388",
+ "BDMAP_00001684",
+ "BDMAP_00003920",
+ "BDMAP_00002992",
+ "BDMAP_00002855",
+ "BDMAP_00003039",
+ "BDMAP_00001966",
+ "BDMAP_00004981",
+ "BDMAP_00001646",
+ "BDMAP_00001257",
+ "BDMAP_00022420",
+ "BDMAP_00004854",
+ "BDMAP_00003295",
+ "BDMAP_00001760",
+ "BDMAP_00004185",
+ "BDMAP_00001671",
+ "BDMAP_00004103",
+ "BDMAP_00014522",
+ "BDMAP_00000889",
+ "BDMAP_00002837",
+ "BDMAP_00001757",
+ "BDMAP_00008305",
+ "BDMAP_00001380",
+ "BDMAP_00004494",
+ "BDMAP_00007236",
+ "BDMAP_00001597",
+ "BDMAP_00003254",
+ "BDMAP_00022436",
+ "BDMAP_00002893",
+ "BDMAP_00007630",
+ "BDMAP_00003943",
+ "BDMAP_00001828",
+ "BDMAP_00004060",
+ "BDMAP_00002172",
+ "BDMAP_00000011",
+ "BDMAP_00002136",
+ "BDMAP_00002373",
+ "BDMAP_00002673",
+ "BDMAP_00000403",
+ "BDMAP_00002035",
+ "BDMAP_00001810",
+ "BDMAP_00002788",
+ "BDMAP_00003747",
+ "BDMAP_00000470",
+ "BDMAP_00001083",
+ "BDMAP_00004232",
+ "BDMAP_00003058",
+ "BDMAP_00003996",
+ "BDMAP_00002398",
+ "BDMAP_00002090",
+ "BDMAP_00008344",
+ "BDMAP_00000439",
+ "BDMAP_00003851",
+ "BDMAP_00000696",
+ "BDMAP_00004482",
+ "BDMAP_00003763",
+ "BDMAP_00005070",
+ "BDMAP_00000683",
+ "BDMAP_00001780",
+ "BDMAP_00002826",
+ "BDMAP_00004015",
+ "BDMAP_00002009",
+ "BDMAP_00001487",
+ "BDMAP_00002953",
+ "BDMAP_00000765",
+ "BDMAP_00003384",
+ "BDMAP_00003315",
+ "BDMAP_00001496",
+ "BDMAP_00003017",
+ "BDMAP_00001610",
+ "BDMAP_00002558",
+ "BDMAP_00004964",
+ "BDMAP_00000948",
+ "BDMAP_00002730",
+ "BDMAP_00014558",
+ "BDMAP_00002940",
+ "BDMAP_00002358",
+ "BDMAP_00000431",
+ "BDMAP_00000662",
+ "BDMAP_00001818",
+ "BDMAP_00004194",
+ "BDMAP_00004984",
+ "BDMAP_00014519",
+ "BDMAP_00002037",
+ "BDMAP_00014563",
+ "BDMAP_00002739",
+ "BDMAP_00000093",
+ "BDMAP_00003112",
+ "BDMAP_00004676",
+ "BDMAP_00000364",
+ "BDMAP_00002776",
+ "BDMAP_00002942",
+ "BDMAP_00004014",
+ "BDMAP_00001128",
+ "BDMAP_00003759",
+ "BDMAP_00000985",
+ "BDMAP_00001437",
+ "BDMAP_00004431",
+ "BDMAP_00001967",
+ "BDMAP_00004279",
+ "BDMAP_00002844",
+ "BDMAP_00000444",
+ "BDMAP_00003556",
+ "BDMAP_00014496",
+ "BDMAP_00001040",
+ "BDMAP_00004010",
+ "BDMAP_00000017",
+ "BDMAP_00000297",
+ "BDMAP_00001617",
+ "BDMAP_00004546",
+ "BDMAP_00002312",
+ "BDMAP_00003587",
+ "BDMAP_00001739",
+ "BDMAP_00000516",
+ "BDMAP_00001931",
+ "BDMAP_00000137",
+ "BDMAP_00000993",
+ "BDMAP_00000595",
+ "BDMAP_00001190",
+ "BDMAP_00002829",
+ "BDMAP_00001414",
+ "BDMAP_00003059",
+ "BDMAP_00002300",
+ "BDMAP_00014559",
+ "BDMAP_00000338",
+ "BDMAP_00000140",
+ "BDMAP_00001785",
+ "BDMAP_00014629",
+ "BDMAP_00004890",
+ "BDMAP_00002947",
+ "BDMAP_00001882",
+ "BDMAP_00000280",
+ "BDMAP_00003769",
+ "BDMAP_00007429",
+ "BDMAP_00006472",
+ "BDMAP_00004514",
+ "BDMAP_00014557",
+ "BDMAP_00001010",
+ "BDMAP_00014498",
+ "BDMAP_00001391",
+ "BDMAP_00001012",
+ "BDMAP_00004289",
+ "BDMAP_00005119",
+ "BDMAP_00002402",
+ "BDMAP_00002344",
+ "BDMAP_00004551",
+ "BDMAP_00022467",
+ "BDMAP_00004836",
+ "BDMAP_00003740",
+ "BDMAP_00000525",
+ "BDMAP_00001281",
+ "BDMAP_00002529",
+ "BDMAP_00001654",
+ "BDMAP_00000536",
+ "BDMAP_00000907",
+ "BDMAP_00003202",
+ "BDMAP_00004557",
+ "BDMAP_00003329",
+ "BDMAP_00001560",
+ "BDMAP_00004495",
+ "BDMAP_00002263",
+ "BDMAP_00001523",
+ "BDMAP_00001140",
+ "BDMAP_00003248",
+ "BDMAP_00003455",
+ "BDMAP_00001170",
+ "BDMAP_00022489",
+ "BDMAP_00002324",
+ "BDMAP_00001514",
+ "BDMAP_00000427",
+ "BDMAP_00004018",
+ "BDMAP_00001455",
+ "BDMAP_00001878",
+ "BDMAP_00004894",
+ "BDMAP_00004686",
+ "BDMAP_00004630",
+ "BDMAP_00014524",
+ "BDMAP_00003132",
+ "BDMAP_00003934",
+ "BDMAP_00002053",
+ "BDMAP_00000475",
+ "BDMAP_00001754",
+ "BDMAP_00003558",
+ "BDMAP_00002478",
+ "BDMAP_00002751",
+ "BDMAP_00000474",
+ "BDMAP_00001171",
+ "BDMAP_00000236",
+ "BDMAP_00002476",
+ "BDMAP_00002870",
+ "BDMAP_00000132",
+ "BDMAP_00004761",
+ "BDMAP_00014485",
+ "BDMAP_00000575",
+ "BDMAP_00001256",
+ "BDMAP_00000670",
+ "BDMAP_00001941",
+ "BDMAP_00004097",
+ "BDMAP_00002480",
+ "BDMAP_00005136",
+ "BDMAP_00004608",
+ "BDMAP_00002068",
+ "BDMAP_00000873",
+ "BDMAP_00005065",
+ "BDMAP_00002522",
+ "BDMAP_00002302",
+ "BDMAP_00000353",
+ "BDMAP_00003608",
+ "BDMAP_00000589",
+ "BDMAP_00001289",
+ "BDMAP_00005191",
+ "BDMAP_00002404",
+ "BDMAP_00000243",
+ "BDMAP_00000247",
+ "BDMAP_00000445",
+ "BDMAP_00001852",
+ "BDMAP_00000606",
+ "BDMAP_00005006",
+ "BDMAP_00004091",
+ "BDMAP_00000411",
+ "BDMAP_00002433",
+ "BDMAP_00014625",
+ "BDMAP_00002873",
+ "BDMAP_00001226",
+ "BDMAP_00000774",
+ "BDMAP_00001770",
+ "BDMAP_00004271",
+ "BDMAP_00002841",
+ "BDMAP_00002707",
+ "BDMAP_00014553",
+ "BDMAP_00009367",
+ "BDMAP_00003613",
+ "BDMAP_00002237",
+ "BDMAP_00022428",
+ "BDMAP_00003063",
+ "BDMAP_00002273",
+ "BDMAP_00003176",
+ "BDMAP_00002363",
+ "BDMAP_00000463",
+ "BDMAP_00002813",
+ "BDMAP_00000505",
+ "BDMAP_00000320",
+ "BDMAP_00001673",
+ "BDMAP_00004311",
+ "BDMAP_00005035",
+ "BDMAP_00001450",
+ "BDMAP_00002284",
+ "BDMAP_00002875",
+ "BDMAP_00002283",
+ "BDMAP_00000503",
+ "BDMAP_00002696",
+ "BDMAP_00004435",
+ "BDMAP_00001403",
+ "BDMAP_00001214",
+ "BDMAP_00000567",
+ "BDMAP_00001452",
+ "BDMAP_00001876",
+ "BDMAP_00000524",
+ "BDMAP_00002815",
+ "BDMAP_00002163",
+ "BDMAP_00004454",
+ "BDMAP_00004775",
+ "BDMAP_00003569",
+ "BDMAP_00002441",
+ "BDMAP_00001669",
+ "BDMAP_00003083",
+ "BDMAP_00014549",
+ "BDMAP_00003130",
+ "BDMAP_00014568",
+ "BDMAP_00004131",
+ "BDMAP_00006507",
+ "BDMAP_00002200",
+ "BDMAP_00002107",
+ "BDMAP_00000887",
+ "BDMAP_00002114",
+ "BDMAP_00004039",
+ "BDMAP_00001068",
+ "BDMAP_00003448",
+ "BDMAP_00004093",
+ "BDMAP_00001115",
+ "BDMAP_00003656",
+ "BDMAP_00003880",
+ "BDMAP_00001270",
+ "BDMAP_00004117",
+ "BDMAP_00014570",
+ "BDMAP_00002538",
+ "BDMAP_00003024",
+ "BDMAP_00000129",
+ "BDMAP_00000729",
+ "BDMAP_00001704",
+ "BDMAP_00000557",
+ "BDMAP_00003482",
+ "BDMAP_00014533",
+ "BDMAP_00000532",
+ "BDMAP_00000724",
+ "BDMAP_00004370",
+ "BDMAP_00002115",
+ "BDMAP_00001919",
+ "BDMAP_00002159",
+ "BDMAP_00001834",
+ "BDMAP_00002519",
+ "BDMAP_00001130",
+ "BDMAP_00005752",
+ "BDMAP_00001568",
+ "BDMAP_00003516",
+ "BDMAP_00001533",
+ "BDMAP_00002462",
+ "BDMAP_00000520",
+ "BDMAP_00001331",
+ "BDMAP_00003557",
+ "BDMAP_00003928",
+ "BDMAP_00002742",
+ "BDMAP_00001223",
+ "BDMAP_00002074",
+ "BDMAP_00022472",
+ "BDMAP_00003581",
+ "BDMAP_00014527",
+ "BDMAP_00003189",
+ "BDMAP_00004265",
+ "BDMAP_00002537",
+ "BDMAP_00001161",
+ "BDMAP_00003333",
+ "BDMAP_00004354",
+ "BDMAP_00003335",
+ "BDMAP_00000413",
+ "BDMAP_00003135",
+ "BDMAP_00004028",
+ "BDMAP_00014517",
+ "BDMAP_00002787",
+ "BDMAP_00000066",
+ "BDMAP_00005106",
+ "BDMAP_00003704",
+ "BDMAP_00014541",
+ "BDMAP_00001536",
+ "BDMAP_00022414",
+ "BDMAP_00002704",
+ "BDMAP_00004151",
+ "BDMAP_00003456",
+ "BDMAP_00001679",
+ "BDMAP_00001138",
+ "BDMAP_00002393",
+ "BDMAP_00002089",
+ "BDMAP_00000579",
+ "BDMAP_00001169",
+ "BDMAP_00003626",
+ "BDMAP_00000710",
+ "BDMAP_00001712"
+ ],
+ "val": [
+ "BDMAP_00004281",
+ "BDMAP_00003481",
+ "BDMAP_00001786",
+ "BDMAP_00000101",
+ "BDMAP_00001813",
+ "BDMAP_00000615",
+ "BDMAP_00003170",
+ "BDMAP_00004378",
+ "BDMAP_00004704",
+ "BDMAP_00003439",
+ "BDMAP_00002717",
+ "BDMAP_00001981",
+ "BDMAP_00000100",
+ "BDMAP_00001018",
+ "BDMAP_00002214",
+ "BDMAP_00001198",
+ "BDMAP_00001962",
+ "BDMAP_00002463",
+ "BDMAP_00005139",
+ "BDMAP_00000831",
+ "BDMAP_00002955",
+ "BDMAP_00003272",
+ "BDMAP_00000745"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all3.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all3.json
new file mode 100644
index 0000000000000000000000000000000000000000..2971ee50af7d5ec33c994e2d9b4ef94578e30aa1
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_all3.json
@@ -0,0 +1,2394 @@
+[
+ {
+ "train": [
+ "BDMAP_00014634",
+ "BDMAP_00014562",
+ "BDMAP_00001263",
+ "BDMAP_00004031",
+ "BDMAP_00003363",
+ "BDMAP_00005097",
+ "BDMAP_00001265",
+ "BDMAP_00001343",
+ "BDMAP_00001223",
+ "BDMAP_00001328",
+ "BDMAP_00008526",
+ "BDMAP_00002986",
+ "BDMAP_00001580",
+ "BDMAP_00004796",
+ "BDMAP_00001794",
+ "BDMAP_00002504",
+ "BDMAP_00000439",
+ "BDMAP_00000301",
+ "BDMAP_00004311",
+ "BDMAP_00001383",
+ "BDMAP_00000812",
+ "BDMAP_00003727",
+ "BDMAP_00002318",
+ "BDMAP_00014516",
+ "BDMAP_00003682",
+ "BDMAP_00000098",
+ "BDMAP_00002458",
+ "BDMAP_00003658",
+ "BDMAP_00000713",
+ "BDMAP_00000271",
+ "BDMAP_00014565",
+ "BDMAP_00001185",
+ "BDMAP_00000122",
+ "BDMAP_00002402",
+ "BDMAP_00003763",
+ "BDMAP_00001024",
+ "BDMAP_00003713",
+ "BDMAP_00003556",
+ "BDMAP_00003543",
+ "BDMAP_00004389",
+ "BDMAP_00000319",
+ "BDMAP_00000038",
+ "BDMAP_00014523",
+ "BDMAP_00003425",
+ "BDMAP_00002937",
+ "BDMAP_00005186",
+ "BDMAP_00008389",
+ "BDMAP_00000396",
+ "BDMAP_00005030",
+ "BDMAP_00000606",
+ "BDMAP_00001907",
+ "BDMAP_00001441",
+ "BDMAP_00008356",
+ "BDMAP_00001429",
+ "BDMAP_00014548",
+ "BDMAP_00000201",
+ "BDMAP_00004209",
+ "BDMAP_00000104",
+ "BDMAP_00003400",
+ "BDMAP_00006589",
+ "BDMAP_00002931",
+ "BDMAP_00000492",
+ "BDMAP_00003836",
+ "BDMAP_00000353",
+ "BDMAP_00001882",
+ "BDMAP_00014613",
+ "BDMAP_00002928",
+ "BDMAP_00000828",
+ "BDMAP_00003971",
+ "BDMAP_00005537",
+ "BDMAP_00003269",
+ "BDMAP_00002347",
+ "BDMAP_00002501",
+ "BDMAP_00002542",
+ "BDMAP_00001228",
+ "BDMAP_00002505",
+ "BDMAP_00004651",
+ "BDMAP_00001766",
+ "BDMAP_00004017",
+ "BDMAP_00003717",
+ "BDMAP_00001288",
+ "BDMAP_00001375",
+ "BDMAP_00003711",
+ "BDMAP_00004427",
+ "BDMAP_00000643",
+ "BDMAP_00000871",
+ "BDMAP_00003824",
+ "BDMAP_00004528",
+ "BDMAP_00022481",
+ "BDMAP_00001905",
+ "BDMAP_00002111",
+ "BDMAP_00002815",
+ "BDMAP_00005083",
+ "BDMAP_00004693",
+ "BDMAP_00003130",
+ "BDMAP_00001230",
+ "BDMAP_00001516",
+ "BDMAP_00014575",
+ "BDMAP_00002203",
+ "BDMAP_00003168",
+ "BDMAP_00004373",
+ "BDMAP_00005078",
+ "BDMAP_00000569",
+ "BDMAP_00000516",
+ "BDMAP_00003735",
+ "BDMAP_00000129",
+ "BDMAP_00000244",
+ "BDMAP_00002711",
+ "BDMAP_00000711",
+ "BDMAP_00004738",
+ "BDMAP_00001450",
+ "BDMAP_00008829",
+ "BDMAP_00001530",
+ "BDMAP_00000963",
+ "BDMAP_00014557",
+ "BDMAP_00002582",
+ "BDMAP_00001407",
+ "BDMAP_00003028",
+ "BDMAP_00000977",
+ "BDMAP_00000533",
+ "BDMAP_00000356",
+ "BDMAP_00001059",
+ "BDMAP_00003704",
+ "BDMAP_00002700",
+ "BDMAP_00005114",
+ "BDMAP_00000498",
+ "BDMAP_00001806",
+ "BDMAP_00022414",
+ "BDMAP_00000336",
+ "BDMAP_00014490",
+ "BDMAP_00004011",
+ "BDMAP_00005009",
+ "BDMAP_00003138",
+ "BDMAP_00000942",
+ "BDMAP_00004890",
+ "BDMAP_00002864",
+ "BDMAP_00000207",
+ "BDMAP_00001852",
+ "BDMAP_00000558",
+ "BDMAP_00004198",
+ "BDMAP_00000234",
+ "BDMAP_00001012",
+ "BDMAP_00000241",
+ "BDMAP_00000756",
+ "BDMAP_00003900",
+ "BDMAP_00002989",
+ "BDMAP_00001115",
+ "BDMAP_00004102",
+ "BDMAP_00001995",
+ "BDMAP_00001313",
+ "BDMAP_00003752",
+ "BDMAP_00000196",
+ "BDMAP_00003851",
+ "BDMAP_00000740",
+ "BDMAP_00001823",
+ "BDMAP_00004910",
+ "BDMAP_00002739",
+ "BDMAP_00022431",
+ "BDMAP_00001669",
+ "BDMAP_00003841",
+ "BDMAP_00001707",
+ "BDMAP_00005063",
+ "BDMAP_00004608",
+ "BDMAP_00002404",
+ "BDMAP_00002379",
+ "BDMAP_00014494",
+ "BDMAP_00001092",
+ "BDMAP_00003610",
+ "BDMAP_00000052",
+ "BDMAP_00000540",
+ "BDMAP_00000017",
+ "BDMAP_00003037",
+ "BDMAP_00002855",
+ "BDMAP_00003972",
+ "BDMAP_00000582",
+ "BDMAP_00002476",
+ "BDMAP_00003297",
+ "BDMAP_00004771",
+ "BDMAP_00002460",
+ "BDMAP_00000956",
+ "BDMAP_00002728",
+ "BDMAP_00003185",
+ "BDMAP_00001826",
+ "BDMAP_00002730",
+ "BDMAP_00003545",
+ "BDMAP_00003421",
+ "BDMAP_00001589",
+ "BDMAP_00001268",
+ "BDMAP_00001692",
+ "BDMAP_00002930",
+ "BDMAP_00001514",
+ "BDMAP_00001171",
+ "BDMAP_00004600",
+ "BDMAP_00003183",
+ "BDMAP_00002106",
+ "BDMAP_00002380",
+ "BDMAP_00003435",
+ "BDMAP_00004702",
+ "BDMAP_00001305",
+ "BDMAP_00002875",
+ "BDMAP_00002282",
+ "BDMAP_00000571",
+ "BDMAP_00003180",
+ "BDMAP_00003736",
+ "BDMAP_00000649",
+ "BDMAP_00000434",
+ "BDMAP_00001590",
+ "BDMAP_00001913",
+ "BDMAP_00001684",
+ "BDMAP_00000732",
+ "BDMAP_00002468",
+ "BDMAP_00002967",
+ "BDMAP_00001169",
+ "BDMAP_00004609",
+ "BDMAP_00001918",
+ "BDMAP_00003176",
+ "BDMAP_00000036",
+ "BDMAP_00000589",
+ "BDMAP_00003740",
+ "BDMAP_00002640",
+ "BDMAP_00000544",
+ "BDMAP_00004652",
+ "BDMAP_00001408",
+ "BDMAP_00003063",
+ "BDMAP_00005691",
+ "BDMAP_00002793",
+ "BDMAP_00004271",
+ "BDMAP_00002083",
+ "BDMAP_00014500",
+ "BDMAP_00001737",
+ "BDMAP_00002182",
+ "BDMAP_00004294",
+ "BDMAP_00001999",
+ "BDMAP_00001360",
+ "BDMAP_00014513",
+ "BDMAP_00004763",
+ "BDMAP_00001828",
+ "BDMAP_00000941",
+ "BDMAP_00003378",
+ "BDMAP_00014485",
+ "BDMAP_00004669",
+ "BDMAP_00004764",
+ "BDMAP_00000525",
+ "BDMAP_00003427",
+ "BDMAP_00004077",
+ "BDMAP_00004880",
+ "BDMAP_00014635",
+ "BDMAP_00004014",
+ "BDMAP_00001286",
+ "BDMAP_00004508",
+ "BDMAP_00002011",
+ "BDMAP_00003448",
+ "BDMAP_00001998",
+ "BDMAP_00000465",
+ "BDMAP_00001597",
+ "BDMAP_00001309",
+ "BDMAP_00002363",
+ "BDMAP_00022469",
+ "BDMAP_00002407",
+ "BDMAP_00000163",
+ "BDMAP_00001402",
+ "BDMAP_00003307",
+ "BDMAP_00004229",
+ "BDMAP_00001565",
+ "BDMAP_00004101",
+ "BDMAP_00003680",
+ "BDMAP_00000437",
+ "BDMAP_00002889",
+ "BDMAP_00002029",
+ "BDMAP_00003326",
+ "BDMAP_00000868",
+ "BDMAP_00004343",
+ "BDMAP_00004850",
+ "BDMAP_00002833",
+ "BDMAP_00002909",
+ "BDMAP_00003261",
+ "BDMAP_00001876",
+ "BDMAP_00001556",
+ "BDMAP_00002263",
+ "BDMAP_00022487",
+ "BDMAP_00001464",
+ "BDMAP_00000146",
+ "BDMAP_00003747",
+ "BDMAP_00022413",
+ "BDMAP_00000340",
+ "BDMAP_00003207",
+ "BDMAP_00001656",
+ "BDMAP_00002762",
+ "BDMAP_00001075",
+ "BDMAP_00003112",
+ "BDMAP_00005399",
+ "BDMAP_00003014",
+ "BDMAP_00002924",
+ "BDMAP_00000006",
+ "BDMAP_00003157",
+ "BDMAP_00001089",
+ "BDMAP_00001834",
+ "BDMAP_00001584",
+ "BDMAP_00002108",
+ "BDMAP_00003071",
+ "BDMAP_00000491",
+ "BDMAP_00003197",
+ "BDMAP_00002546",
+ "BDMAP_00002332",
+ "BDMAP_00001431",
+ "BDMAP_00001370",
+ "BDMAP_00003476",
+ "BDMAP_00001134",
+ "BDMAP_00007579",
+ "BDMAP_00003455",
+ "BDMAP_00003396",
+ "BDMAP_00002655",
+ "BDMAP_00002163",
+ "BDMAP_00004650",
+ "BDMAP_00003199",
+ "BDMAP_00003016",
+ "BDMAP_00001028",
+ "BDMAP_00003677",
+ "BDMAP_00004212",
+ "BDMAP_00007236",
+ "BDMAP_00001396",
+ "BDMAP_00000567",
+ "BDMAP_00000917",
+ "BDMAP_00001564",
+ "BDMAP_00001596",
+ "BDMAP_00001614",
+ "BDMAP_00003656",
+ "BDMAP_00001880",
+ "BDMAP_00002354",
+ "BDMAP_00002444",
+ "BDMAP_00005752",
+ "BDMAP_00001607",
+ "BDMAP_00002331",
+ "BDMAP_00004146",
+ "BDMAP_00001236",
+ "BDMAP_00004265",
+ "BDMAP_00004467",
+ "BDMAP_00001549",
+ "BDMAP_00001391",
+ "BDMAP_00022475",
+ "BDMAP_00000454",
+ "BDMAP_00000508",
+ "BDMAP_00004033",
+ "BDMAP_00000943",
+ "BDMAP_00004181",
+ "BDMAP_00001970",
+ "BDMAP_00004435",
+ "BDMAP_00001020",
+ "BDMAP_00001403",
+ "BDMAP_00003444",
+ "BDMAP_00001221",
+ "BDMAP_00003580",
+ "BDMAP_00014530",
+ "BDMAP_00002616",
+ "BDMAP_00007429",
+ "BDMAP_00001985",
+ "BDMAP_00004664",
+ "BDMAP_00001397",
+ "BDMAP_00001067",
+ "BDMAP_00004060",
+ "BDMAP_00005203",
+ "BDMAP_00002543",
+ "BDMAP_00003636",
+ "BDMAP_00001187",
+ "BDMAP_00000951",
+ "BDMAP_00002550",
+ "BDMAP_00001316",
+ "BDMAP_00000311",
+ "BDMAP_00002834",
+ "BDMAP_00000623",
+ "BDMAP_00002298",
+ "BDMAP_00008344",
+ "BDMAP_00002273",
+ "BDMAP_00005883",
+ "BDMAP_00001495",
+ "BDMAP_00014522",
+ "BDMAP_00000416",
+ "BDMAP_00003758",
+ "BDMAP_00001050",
+ "BDMAP_00004257",
+ "BDMAP_00000162",
+ "BDMAP_00001209",
+ "BDMAP_00000255",
+ "BDMAP_00002230",
+ "BDMAP_00022416",
+ "BDMAP_00004148",
+ "BDMAP_00001822",
+ "BDMAP_00004293",
+ "BDMAP_00001281",
+ "BDMAP_00003153",
+ "BDMAP_00022454",
+ "BDMAP_00003616",
+ "BDMAP_00003880",
+ "BDMAP_00000695",
+ "BDMAP_00007630",
+ "BDMAP_00003849",
+ "BDMAP_00014623",
+ "BDMAP_00004496",
+ "BDMAP_00000522",
+ "BDMAP_00003560",
+ "BDMAP_00003762",
+ "BDMAP_00014517",
+ "BDMAP_00004633",
+ "BDMAP_00001760",
+ "BDMAP_00001631",
+ "BDMAP_00001977",
+ "BDMAP_00003664",
+ "BDMAP_00003359",
+ "BDMAP_00014521",
+ "BDMAP_00003963",
+ "BDMAP_00014525",
+ "BDMAP_00000920",
+ "BDMAP_00004129",
+ "BDMAP_00004154",
+ "BDMAP_00003786",
+ "BDMAP_00002624",
+ "BDMAP_00005138",
+ "BDMAP_00002945",
+ "BDMAP_00002500",
+ "BDMAP_00001252",
+ "BDMAP_00004158",
+ "BDMAP_00000754",
+ "BDMAP_00005035",
+ "BDMAP_00005046",
+ "BDMAP_00002302",
+ "BDMAP_00004150",
+ "BDMAP_00003441",
+ "BDMAP_00002878",
+ "BDMAP_00003595",
+ "BDMAP_00005215",
+ "BDMAP_00001801",
+ "BDMAP_00002480",
+ "BDMAP_00003576",
+ "BDMAP_00004370",
+ "BDMAP_00022463",
+ "BDMAP_00014504",
+ "BDMAP_00001452",
+ "BDMAP_00003612",
+ "BDMAP_00003361",
+ "BDMAP_00004199",
+ "BDMAP_00008617",
+ "BDMAP_00001410",
+ "BDMAP_00000788",
+ "BDMAP_00014556",
+ "BDMAP_00003254",
+ "BDMAP_00004980",
+ "BDMAP_00002938",
+ "BDMAP_00007847",
+ "BDMAP_00005151",
+ "BDMAP_00002611",
+ "BDMAP_00001920",
+ "BDMAP_00001119",
+ "BDMAP_00000844",
+ "BDMAP_00003655",
+ "BDMAP_00000744",
+ "BDMAP_00003058",
+ "BDMAP_00003148",
+ "BDMAP_00000117",
+ "BDMAP_00003194",
+ "BDMAP_00005106",
+ "BDMAP_00002498",
+ "BDMAP_00002074",
+ "BDMAP_00000229",
+ "BDMAP_00014545",
+ "BDMAP_00000001",
+ "BDMAP_00005103",
+ "BDMAP_00004817",
+ "BDMAP_00002285",
+ "BDMAP_00005717",
+ "BDMAP_00000154",
+ "BDMAP_00014484",
+ "BDMAP_00002117",
+ "BDMAP_00014629",
+ "BDMAP_00001237",
+ "BDMAP_00001085",
+ "BDMAP_00002050",
+ "BDMAP_00003299",
+ "BDMAP_00009022",
+ "BDMAP_00004809",
+ "BDMAP_00022472",
+ "BDMAP_00003555",
+ "BDMAP_00004296",
+ "BDMAP_00000185",
+ "BDMAP_00000188",
+ "BDMAP_00003839",
+ "BDMAP_00014561",
+ "BDMAP_00004598",
+ "BDMAP_00004030",
+ "BDMAP_00001378",
+ "BDMAP_00001273",
+ "BDMAP_00001945",
+ "BDMAP_00002018",
+ "BDMAP_00014527",
+ "BDMAP_00002290",
+ "BDMAP_00002998",
+ "BDMAP_00014610",
+ "BDMAP_00001247",
+ "BDMAP_00001931",
+ "BDMAP_00001697",
+ "BDMAP_00001946",
+ "BDMAP_00001368",
+ "BDMAP_00005017",
+ "BDMAP_00000984",
+ "BDMAP_00014628",
+ "BDMAP_00001896",
+ "BDMAP_00004013",
+ "BDMAP_00002511",
+ "BDMAP_00003506",
+ "BDMAP_00003406",
+ "BDMAP_00000584",
+ "BDMAP_00002596",
+ "BDMAP_00000971",
+ "BDMAP_00000506",
+ "BDMAP_00014549",
+ "BDMAP_00003203",
+ "BDMAP_00001736",
+ "BDMAP_00001924",
+ "BDMAP_00004616",
+ "BDMAP_00004679",
+ "BDMAP_00000834",
+ "BDMAP_00002863",
+ "BDMAP_00001732",
+ "BDMAP_00003882",
+ "BDMAP_00002902",
+ "BDMAP_00002698",
+ "BDMAP_00001545",
+ "BDMAP_00004354",
+ "BDMAP_00001519",
+ "BDMAP_00002844",
+ "BDMAP_00006569",
+ "BDMAP_00000565",
+ "BDMAP_00003275",
+ "BDMAP_00007524",
+ "BDMAP_00003759",
+ "BDMAP_00002870",
+ "BDMAP_00002970",
+ "BDMAP_00003356",
+ "BDMAP_00004359",
+ "BDMAP_00002164",
+ "BDMAP_00000692",
+ "BDMAP_00002622",
+ "BDMAP_00000429",
+ "BDMAP_00003517",
+ "BDMAP_00002617",
+ "BDMAP_00002487",
+ "BDMAP_00001107",
+ "BDMAP_00003774",
+ "BDMAP_00022417",
+ "BDMAP_00003178",
+ "BDMAP_00005037",
+ "BDMAP_00022458",
+ "BDMAP_00000476",
+ "BDMAP_00000176",
+ "BDMAP_00000548",
+ "BDMAP_00014539",
+ "BDMAP_00001759",
+ "BDMAP_00022445",
+ "BDMAP_00001227",
+ "BDMAP_00003099",
+ "BDMAP_00000921",
+ "BDMAP_00004331",
+ "BDMAP_00003109",
+ "BDMAP_00002248",
+ "BDMAP_00004083",
+ "BDMAP_00002804",
+ "BDMAP_00006507",
+ "BDMAP_00014486",
+ "BDMAP_00001997",
+ "BDMAP_00003910",
+ "BDMAP_00005073",
+ "BDMAP_00000124",
+ "BDMAP_00004345",
+ "BDMAP_00004437",
+ "BDMAP_00001789",
+ "BDMAP_00005166",
+ "BDMAP_00003638",
+ "BDMAP_00002896",
+ "BDMAP_00002368",
+ "BDMAP_00002170",
+ "BDMAP_00000836",
+ "BDMAP_00014512",
+ "BDMAP_00014542",
+ "BDMAP_00002085",
+ "BDMAP_00002690",
+ "BDMAP_00001817",
+ "BDMAP_00001839",
+ "BDMAP_00001952",
+ "BDMAP_00000012",
+ "BDMAP_00001654",
+ "BDMAP_00004676",
+ "BDMAP_00003491",
+ "BDMAP_00001757",
+ "BDMAP_00004317",
+ "BDMAP_00002051",
+ "BDMAP_00002638",
+ "BDMAP_00002258",
+ "BDMAP_00003581",
+ "BDMAP_00002309",
+ "BDMAP_00000270",
+ "BDMAP_00005020",
+ "BDMAP_00003828",
+ "BDMAP_00000853",
+ "BDMAP_00001440",
+ "BDMAP_00003201",
+ "BDMAP_00000716",
+ "BDMAP_00000093",
+ "BDMAP_00001639",
+ "BDMAP_00002856",
+ "BDMAP_00009738",
+ "BDMAP_00000862",
+ "BDMAP_00003920",
+ "BDMAP_00005113",
+ "BDMAP_00004736",
+ "BDMAP_00003255",
+ "BDMAP_00004374",
+ "BDMAP_00000882",
+ "BDMAP_00001425",
+ "BDMAP_00000564",
+ "BDMAP_00002849",
+ "BDMAP_00003730",
+ "BDMAP_00002383",
+ "BDMAP_00001015",
+ "BDMAP_00000517",
+ "BDMAP_00003443",
+ "BDMAP_00003897",
+ "BDMAP_00005120",
+ "BDMAP_00022437",
+ "BDMAP_00004541",
+ "BDMAP_00001894",
+ "BDMAP_00014497",
+ "BDMAP_00000411",
+ "BDMAP_00000741",
+ "BDMAP_00002829",
+ "BDMAP_00003143",
+ "BDMAP_00002421",
+ "BDMAP_00000729",
+ "BDMAP_00005898",
+ "BDMAP_00003767",
+ "BDMAP_00000742",
+ "BDMAP_00002776",
+ "BDMAP_00002754",
+ "BDMAP_00003957",
+ "BDMAP_00003195",
+ "BDMAP_00001167",
+ "BDMAP_00003600",
+ "BDMAP_00000614",
+ "BDMAP_00002136",
+ "BDMAP_00002398",
+ "BDMAP_00014551",
+ "BDMAP_00002791",
+ "BDMAP_00000464",
+ "BDMAP_00003867",
+ "BDMAP_00004339",
+ "BDMAP_00001298",
+ "BDMAP_00004279",
+ "BDMAP_00022434",
+ "BDMAP_00000369",
+ "BDMAP_00002390",
+ "BDMAP_00002173",
+ "BDMAP_00000579",
+ "BDMAP_00002847",
+ "BDMAP_00004895",
+ "BDMAP_00003036",
+ "BDMAP_00001004",
+ "BDMAP_00001319",
+ "BDMAP_00000676",
+ "BDMAP_00014501",
+ "BDMAP_00002845",
+ "BDMAP_00001842",
+ "BDMAP_00002720",
+ "BDMAP_00002422",
+ "BDMAP_00001416",
+ "BDMAP_00000983",
+ "BDMAP_00002084",
+ "BDMAP_00003395",
+ "BDMAP_00003482",
+ "BDMAP_00003417",
+ "BDMAP_00001103",
+ "BDMAP_00002485",
+ "BDMAP_00014532",
+ "BDMAP_00002265",
+ "BDMAP_00001917",
+ "BDMAP_00001114",
+ "BDMAP_00000927",
+ "BDMAP_00000265",
+ "BDMAP_00002067",
+ "BDMAP_00000595",
+ "BDMAP_00002699",
+ "BDMAP_00014520",
+ "BDMAP_00003032",
+ "BDMAP_00002226",
+ "BDMAP_00002689",
+ "BDMAP_00014491",
+ "BDMAP_00004588",
+ "BDMAP_00003608",
+ "BDMAP_00000205",
+ "BDMAP_00001908",
+ "BDMAP_00001923",
+ "BDMAP_00003500",
+ "BDMAP_00000030",
+ "BDMAP_00001380",
+ "BDMAP_00005130",
+ "BDMAP_00002349",
+ "BDMAP_00007200",
+ "BDMAP_00003249",
+ "BDMAP_00000771",
+ "BDMAP_00003451",
+ "BDMAP_00000710",
+ "BDMAP_00002959",
+ "BDMAP_00000053",
+ "BDMAP_00002562",
+ "BDMAP_00001620",
+ "BDMAP_00000824",
+ "BDMAP_00022442",
+ "BDMAP_00004482",
+ "BDMAP_00001432",
+ "BDMAP_00001192",
+ "BDMAP_00002410",
+ "BDMAP_00004194",
+ "BDMAP_00014531",
+ "BDMAP_00002122",
+ "BDMAP_00001845",
+ "BDMAP_00003776",
+ "BDMAP_00001376",
+ "BDMAP_00002077",
+ "BDMAP_00002355",
+ "BDMAP_00022415",
+ "BDMAP_00002733",
+ "BDMAP_00002798",
+ "BDMAP_00000802",
+ "BDMAP_00003822",
+ "BDMAP_00005022",
+ "BDMAP_00000486",
+ "BDMAP_00002884",
+ "BDMAP_00007561",
+ "BDMAP_00001057",
+ "BDMAP_00014498",
+ "BDMAP_00005099",
+ "BDMAP_00003264",
+ "BDMAP_00001809",
+ "BDMAP_00003685",
+ "BDMAP_00002382",
+ "BDMAP_00003204",
+ "BDMAP_00004103",
+ "BDMAP_00001040",
+ "BDMAP_00003815",
+ "BDMAP_00001780",
+ "BDMAP_00003558",
+ "BDMAP_00000607",
+ "BDMAP_00001810",
+ "BDMAP_00000873",
+ "BDMAP_00004870",
+ "BDMAP_00005150",
+ "BDMAP_00000310",
+ "BDMAP_00004867",
+ "BDMAP_00002708",
+ "BDMAP_00005165",
+ "BDMAP_00002947",
+ "BDMAP_00000987",
+ "BDMAP_00014489",
+ "BDMAP_00014492",
+ "BDMAP_00002075",
+ "BDMAP_00001079",
+ "BDMAP_00000034",
+ "BDMAP_00002737",
+ "BDMAP_00003002",
+ "BDMAP_00014488",
+ "BDMAP_00001818",
+ "BDMAP_00000342",
+ "BDMAP_00003629",
+ "BDMAP_00002466",
+ "BDMAP_00000297",
+ "BDMAP_00002191",
+ "BDMAP_00008085",
+ "BDMAP_00002035",
+ "BDMAP_00002089",
+ "BDMAP_00003796",
+ "BDMAP_00004462",
+ "BDMAP_00000648",
+ "BDMAP_00001635",
+ "BDMAP_00003433",
+ "BDMAP_00001108",
+ "BDMAP_00022440",
+ "BDMAP_00006713",
+ "BDMAP_00004010",
+ "BDMAP_00000634",
+ "BDMAP_00002234",
+ "BDMAP_00001751",
+ "BDMAP_00000715",
+ "BDMAP_00001154",
+ "BDMAP_00003701",
+ "BDMAP_00002321",
+ "BDMAP_00001161",
+ "BDMAP_00004144",
+ "BDMAP_00003337",
+ "BDMAP_00000686",
+ "BDMAP_00003895",
+ "BDMAP_00001517",
+ "BDMAP_00004995",
+ "BDMAP_00002478",
+ "BDMAP_00003052",
+ "BDMAP_00003151",
+ "BDMAP_00004407",
+ "BDMAP_00003000",
+ "BDMAP_00002992",
+ "BDMAP_00002752",
+ "BDMAP_00001690",
+ "BDMAP_00000262",
+ "BDMAP_00001219",
+ "BDMAP_00001559",
+ "BDMAP_00003812",
+ "BDMAP_00000916",
+ "BDMAP_00003132",
+ "BDMAP_00000620",
+ "BDMAP_00001183",
+ "BDMAP_00003287",
+ "BDMAP_00000475",
+ "BDMAP_00001070",
+ "BDMAP_00002359",
+ "BDMAP_00003252",
+ "BDMAP_00001930",
+ "BDMAP_00003816",
+ "BDMAP_00003121",
+ "BDMAP_00014514",
+ "BDMAP_00000133",
+ "BDMAP_00000562",
+ "BDMAP_00001705",
+ "BDMAP_00002096",
+ "BDMAP_00003479",
+ "BDMAP_00002440",
+ "BDMAP_00001617",
+ "BDMAP_00005174",
+ "BDMAP_00000696",
+ "BDMAP_00003348",
+ "BDMAP_00014537",
+ "BDMAP_00005021",
+ "BDMAP_00003532",
+ "BDMAP_00005077",
+ "BDMAP_00001629",
+ "BDMAP_00004196",
+ "BDMAP_00000382",
+ "BDMAP_00001649",
+ "BDMAP_00001140",
+ "BDMAP_00001457",
+ "BDMAP_00002342",
+ "BDMAP_00001583",
+ "BDMAP_00003994",
+ "BDMAP_00002401",
+ "BDMAP_00002527",
+ "BDMAP_00004717",
+ "BDMAP_00004992",
+ "BDMAP_00002920",
+ "BDMAP_00003175",
+ "BDMAP_00000849",
+ "BDMAP_00000936",
+ "BDMAP_00002358",
+ "BDMAP_00003827",
+ "BDMAP_00000091",
+ "BDMAP_00000449",
+ "BDMAP_00014515",
+ "BDMAP_00003949",
+ "BDMAP_00002518",
+ "BDMAP_00001685",
+ "BDMAP_00000698",
+ "BDMAP_00003335",
+ "BDMAP_00003390",
+ "BDMAP_00004228",
+ "BDMAP_00004074",
+ "BDMAP_00000442",
+ "BDMAP_00002571",
+ "BDMAP_00002042",
+ "BDMAP_00000767",
+ "BDMAP_00002537",
+ "BDMAP_00022453",
+ "BDMAP_00003590",
+ "BDMAP_00000602",
+ "BDMAP_00001744",
+ "BDMAP_00001699",
+ "BDMAP_00003034",
+ "BDMAP_00004672",
+ "BDMAP_00004091",
+ "BDMAP_00000826",
+ "BDMAP_00000657",
+ "BDMAP_00004844",
+ "BDMAP_00002484",
+ "BDMAP_00003723",
+ "BDMAP_00000489",
+ "BDMAP_00000918",
+ "BDMAP_00004744",
+ "BDMAP_00000210",
+ "BDMAP_00005157",
+ "BDMAP_00003619",
+ "BDMAP_00000982",
+ "BDMAP_00000632",
+ "BDMAP_00004417",
+ "BDMAP_00000923",
+ "BDMAP_00000330",
+ "BDMAP_00004586",
+ "BDMAP_00000329",
+ "BDMAP_00001064",
+ "BDMAP_00004984",
+ "BDMAP_00002788",
+ "BDMAP_00005119",
+ "BDMAP_00003083",
+ "BDMAP_00002552",
+ "BDMAP_00004303",
+ "BDMAP_00003499",
+ "BDMAP_00002434",
+ "BDMAP_00002943",
+ "BDMAP_00003666",
+ "BDMAP_00002373",
+ "BDMAP_00005168",
+ "BDMAP_00000410",
+ "BDMAP_00014577",
+ "BDMAP_00003158",
+ "BDMAP_00003457",
+ "BDMAP_00002426",
+ "BDMAP_00004636",
+ "BDMAP_00000088",
+ "BDMAP_00000140",
+ "BDMAP_00000837",
+ "BDMAP_00001701",
+ "BDMAP_00004493",
+ "BDMAP_00003281",
+ "BDMAP_00022466",
+ "BDMAP_00003769",
+ "BDMAP_00002618",
+ "BDMAP_00005065",
+ "BDMAP_00001218",
+ "BDMAP_00003811",
+ "BDMAP_00003415",
+ "BDMAP_00003215",
+ "BDMAP_00002188",
+ "BDMAP_00004068",
+ "BDMAP_00001996",
+ "BDMAP_00002091",
+ "BDMAP_00002176",
+ "BDMAP_00000753",
+ "BDMAP_00022421",
+ "BDMAP_00000724",
+ "BDMAP_00002090",
+ "BDMAP_00001025",
+ "BDMAP_00001521",
+ "BDMAP_00002760",
+ "BDMAP_00000389",
+ "BDMAP_00001889",
+ "BDMAP_00000120",
+ "BDMAP_00002661",
+ "BDMAP_00004023",
+ "BDMAP_00002408",
+ "BDMAP_00002592",
+ "BDMAP_00000192",
+ "BDMAP_00004856",
+ "BDMAP_00002235",
+ "BDMAP_00001096",
+ "BDMAP_00001708",
+ "BDMAP_00000428",
+ "BDMAP_00003129",
+ "BDMAP_00000215",
+ "BDMAP_00004499",
+ "BDMAP_00001444",
+ "BDMAP_00004735",
+ "BDMAP_00003072",
+ "BDMAP_00002135",
+ "BDMAP_00003422",
+ "BDMAP_00002940",
+ "BDMAP_00003301",
+ "BDMAP_00004231",
+ "BDMAP_00014615",
+ "BDMAP_00001359",
+ "BDMAP_00001678",
+ "BDMAP_00004211",
+ "BDMAP_00022489",
+ "BDMAP_00005692",
+ "BDMAP_00003017",
+ "BDMAP_00014533",
+ "BDMAP_00001903",
+ "BDMAP_00002679",
+ "BDMAP_00000774",
+ "BDMAP_00003106",
+ "BDMAP_00014622",
+ "BDMAP_00004838",
+ "BDMAP_00000457",
+ "BDMAP_00001010",
+ "BDMAP_00001500",
+ "BDMAP_00002105",
+ "BDMAP_00022490",
+ "BDMAP_00001524",
+ "BDMAP_00004682",
+ "BDMAP_00003640",
+ "BDMAP_00002417",
+ "BDMAP_00005192",
+ "BDMAP_00001239",
+ "BDMAP_00014573",
+ "BDMAP_00001066",
+ "BDMAP_00004460",
+ "BDMAP_00000557",
+ "BDMAP_00000505",
+ "BDMAP_00000435",
+ "BDMAP_00000013",
+ "BDMAP_00002133",
+ "BDMAP_00004514",
+ "BDMAP_00003392",
+ "BDMAP_00003295",
+ "BDMAP_00004289",
+ "BDMAP_00006036",
+ "BDMAP_00001475",
+ "BDMAP_00003258",
+ "BDMAP_00001754",
+ "BDMAP_00002475",
+ "BDMAP_00004552",
+ "BDMAP_00004349",
+ "BDMAP_00004327",
+ "BDMAP_00001175",
+ "BDMAP_00014544",
+ "BDMAP_00001339",
+ "BDMAP_00000907",
+ "BDMAP_00001296",
+ "BDMAP_00004509",
+ "BDMAP_00014535",
+ "BDMAP_00005167",
+ "BDMAP_00003324",
+ "BDMAP_00000080",
+ "BDMAP_00003172",
+ "BDMAP_00005169",
+ "BDMAP_00004719",
+ "BDMAP_00003497",
+ "BDMAP_00000243",
+ "BDMAP_00003642",
+ "BDMAP_00002826",
+ "BDMAP_00002361",
+ "BDMAP_00002262",
+ "BDMAP_00002432",
+ "BDMAP_00002441",
+ "BDMAP_00000799",
+ "BDMAP_00003248",
+ "BDMAP_00008305",
+ "BDMAP_00003149",
+ "BDMAP_00003009",
+ "BDMAP_00014540",
+ "BDMAP_00002545",
+ "BDMAP_00001125",
+ "BDMAP_00003918",
+ "BDMAP_00000247",
+ "BDMAP_00003531",
+ "BDMAP_00002344",
+ "BDMAP_00002481",
+ "BDMAP_00002099",
+ "BDMAP_00008128",
+ "BDMAP_00002808",
+ "BDMAP_00000258",
+ "BDMAP_00003613",
+ "BDMAP_00022435",
+ "BDMAP_00001853",
+ "BDMAP_00003934",
+ "BDMAP_00003808",
+ "BDMAP_00002152",
+ "BDMAP_00004897",
+ "BDMAP_00003569",
+ "BDMAP_00003947",
+ "BDMAP_00014581",
+ "BDMAP_00002509",
+ "BDMAP_00004431",
+ "BDMAP_00004968",
+ "BDMAP_00003519",
+ "BDMAP_00000008",
+ "BDMAP_00005064",
+ "BDMAP_00000989",
+ "BDMAP_00002456",
+ "BDMAP_00002166",
+ "BDMAP_00004686",
+ "BDMAP_00000347",
+ "BDMAP_00001949",
+ "BDMAP_00022473",
+ "BDMAP_00001456",
+ "BDMAP_00000887",
+ "BDMAP_00000400",
+ "BDMAP_00014617",
+ "BDMAP_00022438",
+ "BDMAP_00002257",
+ "BDMAP_00001560",
+ "BDMAP_00002626",
+ "BDMAP_00004901",
+ "BDMAP_00003587",
+ "BDMAP_00003775",
+ "BDMAP_00003928",
+ "BDMAP_00001094",
+ "BDMAP_00001640",
+ "BDMAP_00001912",
+ "BDMAP_00001068",
+ "BDMAP_00022474",
+ "BDMAP_00002590",
+ "BDMAP_00001102",
+ "BDMAP_00014631",
+ "BDMAP_00002171",
+ "BDMAP_00001275",
+ "BDMAP_00002583",
+ "BDMAP_00002304",
+ "BDMAP_00000572",
+ "BDMAP_00000596",
+ "BDMAP_00001184",
+ "BDMAP_00000604",
+ "BDMAP_00002479",
+ "BDMAP_00003312",
+ "BDMAP_00000881",
+ "BDMAP_00001414",
+ "BDMAP_00004286",
+ "BDMAP_00004620",
+ "BDMAP_00001026",
+ "BDMAP_00001266",
+ "BDMAP_00002893",
+ "BDMAP_00003240",
+ "BDMAP_00000121",
+ "BDMAP_00002649",
+ "BDMAP_00000961",
+ "BDMAP_00002442",
+ "BDMAP_00003650",
+ "BDMAP_00003505",
+ "BDMAP_00000250",
+ "BDMAP_00002289",
+ "BDMAP_00003181",
+ "BDMAP_00001971",
+ "BDMAP_00003054",
+ "BDMAP_00014547",
+ "BDMAP_00002172",
+ "BDMAP_00002431",
+ "BDMAP_00002662",
+ "BDMAP_00000309",
+ "BDMAP_00000280",
+ "BDMAP_00002198",
+ "BDMAP_00000683",
+ "BDMAP_00004066",
+ "BDMAP_00004185",
+ "BDMAP_00002685",
+ "BDMAP_00004887",
+ "BDMAP_00000810",
+ "BDMAP_00002333",
+ "BDMAP_00001130",
+ "BDMAP_00000706",
+ "BDMAP_00002022",
+ "BDMAP_00003244",
+ "BDMAP_00002267",
+ "BDMAP_00004830",
+ "BDMAP_00001258",
+ "BDMAP_00003038",
+ "BDMAP_00000656",
+ "BDMAP_00000843",
+ "BDMAP_00002584",
+ "BDMAP_00003755",
+ "BDMAP_00004808",
+ "BDMAP_00000069",
+ "BDMAP_00000601",
+ "BDMAP_00004208",
+ "BDMAP_00000139",
+ "BDMAP_00004886",
+ "BDMAP_00001647",
+ "BDMAP_00002746",
+ "BDMAP_00004759",
+ "BDMAP_00003031",
+ "BDMAP_00001712",
+ "BDMAP_00003117",
+ "BDMAP_00003525",
+ "BDMAP_00003024",
+ "BDMAP_00000947",
+ "BDMAP_00003319",
+ "BDMAP_00001133",
+ "BDMAP_00000981",
+ "BDMAP_00014511",
+ "BDMAP_00002448",
+ "BDMAP_00004641",
+ "BDMAP_00005108",
+ "BDMAP_00001117",
+ "BDMAP_00003041",
+ "BDMAP_00000169",
+ "BDMAP_00002570",
+ "BDMAP_00000249",
+ "BDMAP_00000653",
+ "BDMAP_00014541",
+ "BDMAP_00000414",
+ "BDMAP_00002037",
+ "BDMAP_00014583",
+ "BDMAP_00001863",
+ "BDMAP_00001027",
+ "BDMAP_00000859",
+ "BDMAP_00002305",
+ "BDMAP_00000575",
+ "BDMAP_00002190",
+ "BDMAP_00001033",
+ "BDMAP_00002716",
+ "BDMAP_00002057",
+ "BDMAP_00001868",
+ "BDMAP_00002801",
+ "BDMAP_00001870",
+ "BDMAP_00022461",
+ "BDMAP_00022432",
+ "BDMAP_00000520",
+ "BDMAP_00005001",
+ "BDMAP_00022439",
+ "BDMAP_00014630",
+ "BDMAP_00002966",
+ "BDMAP_00000283",
+ "BDMAP_00014507",
+ "BDMAP_00002005",
+ "BDMAP_00004529",
+ "BDMAP_00001562",
+ "BDMAP_00003140",
+ "BDMAP_00022420",
+ "BDMAP_00002216",
+ "BDMAP_00002322",
+ "BDMAP_00000484",
+ "BDMAP_00007629",
+ "BDMAP_00002948",
+ "BDMAP_00003122",
+ "BDMAP_00000618",
+ "BDMAP_00004224",
+ "BDMAP_00001511",
+ "BDMAP_00000699",
+ "BDMAP_00000714",
+ "BDMAP_00014576",
+ "BDMAP_00001796",
+ "BDMAP_00000694",
+ "BDMAP_00003833",
+ "BDMAP_00000980",
+ "BDMAP_00004855",
+ "BDMAP_00002713",
+ "BDMAP_00014499",
+ "BDMAP_00022443",
+ "BDMAP_00004295",
+ "BDMAP_00002000",
+ "BDMAP_00003861",
+ "BDMAP_00022423",
+ "BDMAP_00002614",
+ "BDMAP_00000827",
+ "BDMAP_00014566",
+ "BDMAP_00000039",
+ "BDMAP_00002507",
+ "BDMAP_00002017",
+ "BDMAP_00002972",
+ "BDMAP_00000263",
+ "BDMAP_00002805",
+ "BDMAP_00000462",
+ "BDMAP_00001967",
+ "BDMAP_00005075",
+ "BDMAP_00001241",
+ "BDMAP_00005191",
+ "BDMAP_00000219",
+ "BDMAP_00000413",
+ "BDMAP_00001486",
+ "BDMAP_00002185",
+ "BDMAP_00014626",
+ "BDMAP_00001919",
+ "BDMAP_00002403",
+ "BDMAP_00005105",
+ "BDMAP_00014529",
+ "BDMAP_00005444",
+ "BDMAP_00000948",
+ "BDMAP_00004727",
+ "BDMAP_00003493",
+ "BDMAP_00002451",
+ "BDMAP_00001413",
+ "BDMAP_00000667",
+ "BDMAP_00000641",
+ "BDMAP_00003494",
+ "BDMAP_00001335",
+ "BDMAP_00002129",
+ "BDMAP_00000391",
+ "BDMAP_00004288",
+ "BDMAP_00002040",
+ "BDMAP_00002837",
+ "BDMAP_00003376",
+ "BDMAP_00001799",
+ "BDMAP_00000239",
+ "BDMAP_00000204",
+ "BDMAP_00000532",
+ "BDMAP_00003601",
+ "BDMAP_00001581",
+ "BDMAP_00000377",
+ "BDMAP_00001331",
+ "BDMAP_00004415",
+ "BDMAP_00003721",
+ "BDMAP_00006181",
+ "BDMAP_00001437",
+ "BDMAP_00000524",
+ "BDMAP_00001055",
+ "BDMAP_00000331",
+ "BDMAP_00001473",
+ "BDMAP_00000758",
+ "BDMAP_00001740",
+ "BDMAP_00001465",
+ "BDMAP_00000366",
+ "BDMAP_00002104",
+ "BDMAP_00003509",
+ "BDMAP_00003598",
+ "BDMAP_00014487",
+ "BDMAP_00004347",
+ "BDMAP_00001906",
+ "BDMAP_00001605",
+ "BDMAP_00000161",
+ "BDMAP_00003733",
+ "BDMAP_00002523",
+ "BDMAP_00001840",
+ "BDMAP_00014616",
+ "BDMAP_00001289",
+ "BDMAP_00004627",
+ "BDMAP_00001480",
+ "BDMAP_00003411",
+ "BDMAP_00004093",
+ "BDMAP_00001471",
+ "BDMAP_00003135",
+ "BDMAP_00005162",
+ "BDMAP_00003633",
+ "BDMAP_00001571",
+ "BDMAP_00004315",
+ "BDMAP_00002278",
+ "BDMAP_00003461",
+ "BDMAP_00001784",
+ "BDMAP_00005171",
+ "BDMAP_00005154",
+ "BDMAP_00003956",
+ "BDMAP_00000965",
+ "BDMAP_00007159",
+ "BDMAP_00004981",
+ "BDMAP_00000062",
+ "BDMAP_00000748",
+ "BDMAP_00000488",
+ "BDMAP_00003228",
+ "BDMAP_00004885",
+ "BDMAP_00000376",
+ "BDMAP_00003510",
+ "BDMAP_00000178",
+ "BDMAP_00004104",
+ "BDMAP_00003305",
+ "BDMAP_00004722",
+ "BDMAP_00000427",
+ "BDMAP_00000394",
+ "BDMAP_00022426",
+ "BDMAP_00004450",
+ "BDMAP_00000059",
+ "BDMAP_00003484",
+ "BDMAP_00004459",
+ "BDMAP_00000908",
+ "BDMAP_00003357",
+ "BDMAP_00003152",
+ "BDMAP_00003579",
+ "BDMAP_00006623",
+ "BDMAP_00014509",
+ "BDMAP_00001277",
+ "BDMAP_00001836",
+ "BDMAP_00004193",
+ "BDMAP_00014546",
+ "BDMAP_00003869",
+ "BDMAP_00022444",
+ "BDMAP_00002651",
+ "BDMAP_00002951",
+ "BDMAP_00004990",
+ "BDMAP_00005198",
+ "BDMAP_00000320",
+ "BDMAP_00002956",
+ "BDMAP_00003349",
+ "BDMAP_00002237",
+ "BDMAP_00002933",
+ "BDMAP_00003469",
+ "BDMAP_00001768",
+ "BDMAP_00001987",
+ "BDMAP_00004847",
+ "BDMAP_00004712",
+ "BDMAP_00001341",
+ "BDMAP_00001783",
+ "BDMAP_00004510",
+ "BDMAP_00002780",
+ "BDMAP_00007838",
+ "BDMAP_00001474",
+ "BDMAP_00003320",
+ "BDMAP_00003955",
+ "BDMAP_00004183",
+ "BDMAP_00014526",
+ "BDMAP_00002114",
+ "BDMAP_00001785",
+ "BDMAP_00002167",
+ "BDMAP_00001283",
+ "BDMAP_00002977",
+ "BDMAP_00001190",
+ "BDMAP_00000293",
+ "BDMAP_00001379",
+ "BDMAP_00004843",
+ "BDMAP_00014564",
+ "BDMAP_00003462",
+ "BDMAP_00007597",
+ "BDMAP_00002549",
+ "BDMAP_00003694",
+ "BDMAP_00001602",
+ "BDMAP_00004165",
+ "BDMAP_00000431",
+ "BDMAP_00004511",
+ "BDMAP_00014558",
+ "BDMAP_00003574",
+ "BDMAP_00002851",
+ "BDMAP_00001138",
+ "BDMAP_00002199",
+ "BDMAP_00002211",
+ "BDMAP_00000541",
+ "BDMAP_00004187",
+ "BDMAP_00002758",
+ "BDMAP_00002695",
+ "BDMAP_00000032",
+ "BDMAP_00000368",
+ "BDMAP_00003051",
+ "BDMAP_00014555",
+ "BDMAP_00000432",
+ "BDMAP_00001947",
+ "BDMAP_00003340",
+ "BDMAP_00014502",
+ "BDMAP_00001443",
+ "BDMAP_00002652",
+ "BDMAP_00014620",
+ "BDMAP_00002781",
+ "BDMAP_00001536",
+ "BDMAP_00004027",
+ "BDMAP_00000913",
+ "BDMAP_00002665",
+ "BDMAP_00022465",
+ "BDMAP_00002335",
+ "BDMAP_00014553",
+ "BDMAP_00002841",
+ "BDMAP_00004597",
+ "BDMAP_00008525",
+ "BDMAP_00002324",
+ "BDMAP_00003697",
+ "BDMAP_00003719",
+ "BDMAP_00014570",
+ "BDMAP_00000321",
+ "BDMAP_00000855",
+ "BDMAP_00002376",
+ "BDMAP_00000889",
+ "BDMAP_00002060",
+ "BDMAP_00002719",
+ "BDMAP_00001612",
+ "BDMAP_00001270",
+ "BDMAP_00000552",
+ "BDMAP_00022429",
+ "BDMAP_00003092",
+ "BDMAP_00004854",
+ "BDMAP_00002773",
+ "BDMAP_00002115",
+ "BDMAP_00001001",
+ "BDMAP_00000555",
+ "BDMAP_00001873",
+ "BDMAP_00002315",
+ "BDMAP_00002723",
+ "BDMAP_00001663",
+ "BDMAP_00014506",
+ "BDMAP_00004745",
+ "BDMAP_00005175",
+ "BDMAP_00022467",
+ "BDMAP_00002313",
+ "BDMAP_00001302",
+ "BDMAP_00003219",
+ "BDMAP_00000939",
+ "BDMAP_00003959",
+ "BDMAP_00005547",
+ "BDMAP_00001624",
+ "BDMAP_00002881",
+ "BDMAP_00000273",
+ "BDMAP_00003059",
+ "BDMAP_00000447",
+ "BDMAP_00004761",
+ "BDMAP_00002991",
+ "BDMAP_00003754",
+ "BDMAP_00002953",
+ "BDMAP_00002906",
+ "BDMAP_00002227",
+ "BDMAP_00001633",
+ "BDMAP_00004561",
+ "BDMAP_00022462",
+ "BDMAP_00001522",
+ "BDMAP_00003511",
+ "BDMAP_00002066",
+ "BDMAP_00001257",
+ "BDMAP_00004262",
+ "BDMAP_00004454",
+ "BDMAP_00001045",
+ "BDMAP_00001088",
+ "BDMAP_00001261",
+ "BDMAP_00003645",
+ "BDMAP_00004012",
+ "BDMAP_00022433",
+ "BDMAP_00007665",
+ "BDMAP_00000160",
+ "BDMAP_00004503",
+ "BDMAP_00000993",
+ "BDMAP_00004575",
+ "BDMAP_00002243",
+ "BDMAP_00009876",
+ "BDMAP_00002292",
+ "BDMAP_00002107",
+ "BDMAP_00002579",
+ "BDMAP_00005136",
+ "BDMAP_00002233",
+ "BDMAP_00002439",
+ "BDMAP_00002300",
+ "BDMAP_00004673",
+ "BDMAP_00003634",
+ "BDMAP_00004825",
+ "BDMAP_00000765",
+ "BDMAP_00001548",
+ "BDMAP_00003196",
+ "BDMAP_00000417",
+ "BDMAP_00000640",
+ "BDMAP_00002601",
+ "BDMAP_00002751",
+ "BDMAP_00001978",
+ "BDMAP_00002471",
+ "BDMAP_00000363",
+ "BDMAP_00003256",
+ "BDMAP_00000924",
+ "BDMAP_00000175",
+ "BDMAP_00001721",
+ "BDMAP_00004746",
+ "BDMAP_00014536",
+ "BDMAP_00005698",
+ "BDMAP_00002544",
+ "BDMAP_00000626",
+ "BDMAP_00001731",
+ "BDMAP_00000915",
+ "BDMAP_00004551",
+ "BDMAP_00002580",
+ "BDMAP_00002789",
+ "BDMAP_00014508",
+ "BDMAP_00003193",
+ "BDMAP_00002682",
+ "BDMAP_00001222",
+ "BDMAP_00014550",
+ "BDMAP_00004278",
+ "BDMAP_00004671",
+ "BDMAP_00002918",
+ "BDMAP_00002251",
+ "BDMAP_00001351",
+ "BDMAP_00002905",
+ "BDMAP_00001523",
+ "BDMAP_00000583",
+ "BDMAP_00005500",
+ "BDMAP_00002158",
+ "BDMAP_00002555",
+ "BDMAP_00003746",
+ "BDMAP_00000128",
+ "BDMAP_00000438",
+ "BDMAP_00001646",
+ "BDMAP_00002619",
+ "BDMAP_00000513",
+ "BDMAP_00003257",
+ "BDMAP_00003315",
+ "BDMAP_00003155",
+ "BDMAP_00001476",
+ "BDMAP_00008555",
+ "BDMAP_00002284",
+ "BDMAP_00022424",
+ "BDMAP_00001677",
+ "BDMAP_00003232",
+ "BDMAP_00004639",
+ "BDMAP_00000086",
+ "BDMAP_00000751",
+ "BDMAP_00000536",
+ "BDMAP_00003483",
+ "BDMAP_00003893",
+ "BDMAP_00003070",
+ "BDMAP_00003857",
+ "BDMAP_00001461",
+ "BDMAP_00002588",
+ "BDMAP_00001496",
+ "BDMAP_00000087",
+ "BDMAP_00003806",
+ "BDMAP_00001941",
+ "BDMAP_00001833",
+ "BDMAP_00003404",
+ "BDMAP_00001520",
+ "BDMAP_00002021",
+ "BDMAP_00001023",
+ "BDMAP_00001251",
+ "BDMAP_00001710",
+ "BDMAP_00004550",
+ "BDMAP_00000282",
+ "BDMAP_00004395",
+ "BDMAP_00001141",
+ "BDMAP_00000010",
+ "BDMAP_00000090",
+ "BDMAP_00003189",
+ "BDMAP_00001422",
+ "BDMAP_00003614",
+ "BDMAP_00001553",
+ "BDMAP_00004147",
+ "BDMAP_00002080",
+ "BDMAP_00002326",
+ "BDMAP_00004117",
+ "BDMAP_00000890",
+ "BDMAP_00003676",
+ "BDMAP_00003042",
+ "BDMAP_00001752",
+ "BDMAP_00000444",
+ "BDMAP_00014503",
+ "BDMAP_00001003",
+ "BDMAP_00002186",
+ "BDMAP_00002547",
+ "BDMAP_00002095",
+ "BDMAP_00004943",
+ "BDMAP_00001927",
+ "BDMAP_00002260",
+ "BDMAP_00003239",
+ "BDMAP_00001502",
+ "BDMAP_00000009",
+ "BDMAP_00002353",
+ "BDMAP_00001453",
+ "BDMAP_00014625",
+ "BDMAP_00000926",
+ "BDMAP_00001858",
+ "BDMAP_00001083",
+ "BDMAP_00003113",
+ "BDMAP_00003678",
+ "BDMAP_00002575",
+ "BDMAP_00001711",
+ "BDMAP_00001254",
+ "BDMAP_00001543",
+ "BDMAP_00000153",
+ "BDMAP_00003508",
+ "BDMAP_00014528",
+ "BDMAP_00000333",
+ "BDMAP_00005085",
+ "BDMAP_00003333",
+ "BDMAP_00004052",
+ "BDMAP_00003513",
+ "BDMAP_00001211",
+ "BDMAP_00001568",
+ "BDMAP_00000084",
+ "BDMAP_00005429",
+ "BDMAP_00006148",
+ "BDMAP_00006533",
+ "BDMAP_00000803",
+ "BDMAP_00002396",
+ "BDMAP_00003364",
+ "BDMAP_00004475",
+ "BDMAP_00003749",
+ "BDMAP_00004018",
+ "BDMAP_00003277",
+ "BDMAP_00002840",
+ "BDMAP_00004780",
+ "BDMAP_00001777",
+ "BDMAP_00003177",
+ "BDMAP_00014496",
+ "BDMAP_00004384",
+ "BDMAP_00002993",
+ "BDMAP_00003753",
+ "BDMAP_00003362",
+ "BDMAP_00002411",
+ "BDMAP_00002221",
+ "BDMAP_00002146",
+ "BDMAP_00001518",
+ "BDMAP_00002866",
+ "BDMAP_00001753",
+ "BDMAP_00003330",
+ "BDMAP_00003683",
+ "BDMAP_00002803",
+ "BDMAP_00002653",
+ "BDMAP_00003791",
+ "BDMAP_00002200",
+ "BDMAP_00001891",
+ "BDMAP_00003350",
+ "BDMAP_00001638",
+ "BDMAP_00000225",
+ "BDMAP_00000327",
+ "BDMAP_00000480",
+ "BDMAP_00000362",
+ "BDMAP_00000466",
+ "BDMAP_00000477",
+ "BDMAP_00003260",
+ "BDMAP_00004297",
+ "BDMAP_00004121",
+ "BDMAP_00000662",
+ "BDMAP_00001093",
+ "BDMAP_00004494",
+ "BDMAP_00004546",
+ "BDMAP_00003073",
+ "BDMAP_00014563",
+ "BDMAP_00000666",
+ "BDMAP_00004903",
+ "BDMAP_00014543",
+ "BDMAP_00001078",
+ "BDMAP_00004927",
+ "BDMAP_00004876",
+ "BDMAP_00004106",
+ "BDMAP_00001831",
+ "BDMAP_00003529",
+ "BDMAP_00003141",
+ "BDMAP_00001256",
+ "BDMAP_00001233",
+ "BDMAP_00002879",
+ "BDMAP_00001065",
+ "BDMAP_00001420",
+ "BDMAP_00002873",
+ "BDMAP_00022418",
+ "BDMAP_00002153",
+ "BDMAP_00000568",
+ "BDMAP_00001390",
+ "BDMAP_00004408",
+ "BDMAP_00003798",
+ "BDMAP_00001791",
+ "BDMAP_00000214",
+ "BDMAP_00003074",
+ "BDMAP_00002033",
+ "BDMAP_00009779",
+ "BDMAP_00000408",
+ "BDMAP_00003366",
+ "BDMAP_00002669",
+ "BDMAP_00001427",
+ "BDMAP_00000661",
+ "BDMAP_00003035",
+ "BDMAP_00003116",
+ "BDMAP_00000690",
+ "BDMAP_00001800",
+ "BDMAP_00002558",
+ "BDMAP_00000232",
+ "BDMAP_00003930",
+ "BDMAP_00000305",
+ "BDMAP_00003603",
+ "BDMAP_00014612",
+ "BDMAP_00000445",
+ "BDMAP_00003557",
+ "BDMAP_00002718",
+ "BDMAP_00001419",
+ "BDMAP_00004998",
+ "BDMAP_00004615",
+ "BDMAP_00001779",
+ "BDMAP_00002045",
+ "BDMAP_00001807",
+ "BDMAP_00014505",
+ "BDMAP_00001618",
+ "BDMAP_00001851",
+ "BDMAP_00000815",
+ "BDMAP_00000549",
+ "BDMAP_00004926",
+ "BDMAP_00001939",
+ "BDMAP_00000998",
+ "BDMAP_00001805",
+ "BDMAP_00001619",
+ "BDMAP_00005016",
+ "BDMAP_00000470",
+ "BDMAP_00002574",
+ "BDMAP_00004804",
+ "BDMAP_00003146",
+ "BDMAP_00002519",
+ "BDMAP_00008306",
+ "BDMAP_00003245",
+ "BDMAP_00004549",
+ "BDMAP_00000978",
+ "BDMAP_00003384",
+ "BDMAP_00002683",
+ "BDMAP_00002496",
+ "BDMAP_00022456",
+ "BDMAP_00000446",
+ "BDMAP_00000503",
+ "BDMAP_00008208",
+ "BDMAP_00002201",
+ "BDMAP_00003943",
+ "BDMAP_00003657",
+ "BDMAP_00000011",
+ "BDMAP_00001126",
+ "BDMAP_00001921",
+ "BDMAP_00000839",
+ "BDMAP_00000358",
+ "BDMAP_00000403",
+ "BDMAP_00002052",
+ "BDMAP_00002929",
+ "BDMAP_00002204",
+ "BDMAP_00001782",
+ "BDMAP_00002636",
+ "BDMAP_00002127",
+ "BDMAP_00001507",
+ "BDMAP_00004048",
+ "BDMAP_00001215",
+ "BDMAP_00004457",
+ "BDMAP_00000256",
+ "BDMAP_00003440",
+ "BDMAP_00001200",
+ "BDMAP_00001867",
+ "BDMAP_00001636",
+ "BDMAP_00002643",
+ "BDMAP_00003456",
+ "BDMAP_00005006",
+ "BDMAP_00005185",
+ "BDMAP_00002813",
+ "BDMAP_00001340",
+ "BDMAP_00003801",
+ "BDMAP_00001747",
+ "BDMAP_00004259",
+ "BDMAP_00003853",
+ "BDMAP_00000137",
+ "BDMAP_00001892",
+ "BDMAP_00002540",
+ "BDMAP_00002120",
+ "BDMAP_00001865",
+ "BDMAP_00001105",
+ "BDMAP_00001957",
+ "BDMAP_00003358",
+ "BDMAP_00003756",
+ "BDMAP_00004087",
+ "BDMAP_00000940",
+ "BDMAP_00003840",
+ "BDMAP_00004328",
+ "BDMAP_00003128",
+ "BDMAP_00004604",
+ "BDMAP_00001072",
+ "BDMAP_00003551",
+ "BDMAP_00002831",
+ "BDMAP_00002288",
+ "BDMAP_00003407",
+ "BDMAP_00014574",
+ "BDMAP_00002271",
+ "BDMAP_00002220",
+ "BDMAP_00006402",
+ "BDMAP_00000365",
+ "BDMAP_00001550",
+ "BDMAP_00002823",
+ "BDMAP_00002328",
+ "BDMAP_00001539",
+ "BDMAP_00004991",
+ "BDMAP_00005070",
+ "BDMAP_00004894",
+ "BDMAP_00003394",
+ "BDMAP_00001689",
+ "BDMAP_00001513",
+ "BDMAP_00002632",
+ "BDMAP_00022478",
+ "BDMAP_00003327",
+ "BDMAP_00000681",
+ "BDMAP_00001099",
+ "BDMAP_00004414",
+ "BDMAP_00000687",
+ "BDMAP_00001804",
+ "BDMAP_00000033",
+ "BDMAP_00001575",
+ "BDMAP_00004028",
+ "BDMAP_00001489",
+ "BDMAP_00014578",
+ "BDMAP_00003225",
+ "BDMAP_00002027",
+ "BDMAP_00003344",
+ "BDMAP_00002464",
+ "BDMAP_00001362",
+ "BDMAP_00002039",
+ "BDMAP_00000968",
+ "BDMAP_00014621",
+ "BDMAP_00002901",
+ "BDMAP_00007259",
+ "BDMAP_00001128",
+ "BDMAP_00002524",
+ "BDMAP_00000616",
+ "BDMAP_00001260",
+ "BDMAP_00002103",
+ "BDMAP_00002254",
+ "BDMAP_00004772",
+ "BDMAP_00002529",
+ "BDMAP_00000510",
+ "BDMAP_00004645",
+ "BDMAP_00000167",
+ "BDMAP_00001622",
+ "BDMAP_00003777",
+ "BDMAP_00004163",
+ "BDMAP_00000529",
+ "BDMAP_00000364",
+ "BDMAP_00003465",
+ "BDMAP_00000587",
+ "BDMAP_00001862",
+ "BDMAP_00004479",
+ "BDMAP_00002159",
+ "BDMAP_00002673",
+ "BDMAP_00003300",
+ "BDMAP_00000344",
+ "BDMAP_00005546",
+ "BDMAP_00003022",
+ "BDMAP_00001214",
+ "BDMAP_00002086",
+ "BDMAP_00000190",
+ "BDMAP_00001225",
+ "BDMAP_00002573",
+ "BDMAP_00003039",
+ "BDMAP_00004304",
+ "BDMAP_00002049",
+ "BDMAP_00001688",
+ "BDMAP_00004420",
+ "BDMAP_00001168",
+ "BDMAP_00000106",
+ "BDMAP_00022451",
+ "BDMAP_00003530",
+ "BDMAP_00003373",
+ "BDMAP_00002787",
+ "BDMAP_00005067",
+ "BDMAP_00002312",
+ "BDMAP_00002055",
+ "BDMAP_00001109",
+ "BDMAP_00002748",
+ "BDMAP_00001122",
+ "BDMAP_00004350",
+ "BDMAP_00004953",
+ "BDMAP_00002656",
+ "BDMAP_00003004",
+ "BDMAP_00003592",
+ "BDMAP_00004065",
+ "BDMAP_00003200",
+ "BDMAP_00000359",
+ "BDMAP_00000388",
+ "BDMAP_00002393",
+ "BDMAP_00003521",
+ "BDMAP_00000896",
+ "BDMAP_00004557",
+ "BDMAP_00004397",
+ "BDMAP_00004841",
+ "BDMAP_00004447",
+ "BDMAP_00003049",
+ "BDMAP_00001333",
+ "BDMAP_00003314",
+ "BDMAP_00004592",
+ "BDMAP_00004536",
+ "BDMAP_00000324",
+ "BDMAP_00001857",
+ "BDMAP_00001910",
+ "BDMAP_00014518",
+ "BDMAP_00014611",
+ "BDMAP_00022412",
+ "BDMAP_00014627",
+ "BDMAP_00000044",
+ "BDMAP_00002712",
+ "BDMAP_00002053",
+ "BDMAP_00000481",
+ "BDMAP_00002126",
+ "BDMAP_00000670",
+ "BDMAP_00001324",
+ "BDMAP_00002319",
+ "BDMAP_00001208",
+ "BDMAP_00003823",
+ "BDMAP_00000773",
+ "BDMAP_00002175",
+ "BDMAP_00000398",
+ "BDMAP_00003744",
+ "BDMAP_00014579",
+ "BDMAP_00001877",
+ "BDMAP_00002419",
+ "BDMAP_00004836",
+ "BDMAP_00001322",
+ "BDMAP_00002934",
+ "BDMAP_00003973",
+ "BDMAP_00004829",
+ "BDMAP_00014568",
+ "BDMAP_00001323",
+ "BDMAP_00002387",
+ "BDMAP_00003602",
+ "BDMAP_00003463",
+ "BDMAP_00001634",
+ "BDMAP_00008568",
+ "BDMAP_00003253",
+ "BDMAP_00003802",
+ "BDMAP_00014571",
+ "BDMAP_00003848",
+ "BDMAP_00001770",
+ "BDMAP_00000474",
+ "BDMAP_00001610",
+ "BDMAP_00014510",
+ "BDMAP_00003622",
+ "BDMAP_00005753",
+ "BDMAP_00002295",
+ "BDMAP_00003781",
+ "BDMAP_00003381",
+ "BDMAP_00002999",
+ "BDMAP_00003087",
+ "BDMAP_00004923",
+ "BDMAP_00001272",
+ "BDMAP_00001673",
+ "BDMAP_00006534",
+ "BDMAP_00000233",
+ "BDMAP_00014614",
+ "BDMAP_00001170",
+ "BDMAP_00004773",
+ "BDMAP_00003549",
+ "BDMAP_00001704",
+ "BDMAP_00014582",
+ "BDMAP_00002389",
+ "BDMAP_00002087",
+ "BDMAP_00007822",
+ "BDMAP_00003911",
+ "BDMAP_00004922",
+ "BDMAP_00001830",
+ "BDMAP_00004481",
+ "BDMAP_00002381",
+ "BDMAP_00014624",
+ "BDMAP_00002472",
+ "BDMAP_00000972",
+ "BDMAP_00014519",
+ "BDMAP_00000149",
+ "BDMAP_00022436",
+ "BDMAP_00008968",
+ "BDMAP_00004368",
+ "BDMAP_00003438",
+ "BDMAP_00002710",
+ "BDMAP_00005141",
+ "BDMAP_00000355",
+ "BDMAP_00002854",
+ "BDMAP_00004878",
+ "BDMAP_00002043",
+ "BDMAP_00004416",
+ "BDMAP_00004954",
+ "BDMAP_00000985",
+ "BDMAP_00000037",
+ "BDMAP_00002252",
+ "BDMAP_00002724",
+ "BDMAP_00008828",
+ "BDMAP_00000701",
+ "BDMAP_00002147",
+ "BDMAP_00000719",
+ "BDMAP_00002492",
+ "BDMAP_00002065",
+ "BDMAP_00005160",
+ "BDMAP_00002688",
+ "BDMAP_00000668",
+ "BDMAP_00001226",
+ "BDMAP_00001285",
+ "BDMAP_00014554",
+ "BDMAP_00001455",
+ "BDMAP_00003578",
+ "BDMAP_00003294",
+ "BDMAP_00001802",
+ "BDMAP_00002068",
+ "BDMAP_00002009",
+ "BDMAP_00001944",
+ "BDMAP_00003620",
+ "BDMAP_00003202",
+ "BDMAP_00004260",
+ "BDMAP_00002076",
+ "BDMAP_00000792",
+ "BDMAP_00000285",
+ "BDMAP_00014559",
+ "BDMAP_00004866",
+ "BDMAP_00000931",
+ "BDMAP_00000066",
+ "BDMAP_00002283",
+ "BDMAP_00003046",
+ "BDMAP_00002976",
+ "BDMAP_00002462",
+ "BDMAP_00000709",
+ "BDMAP_00003646",
+ "BDMAP_00004264",
+ "BDMAP_00004834",
+ "BDMAP_00002871",
+ "BDMAP_00003998",
+ "BDMAP_00002846",
+ "BDMAP_00004527",
+ "BDMAP_00001533",
+ "BDMAP_00002560",
+ "BDMAP_00002244",
+ "BDMAP_00014524",
+ "BDMAP_00000132",
+ "BDMAP_00000883",
+ "BDMAP_00001104",
+ "BDMAP_00002522",
+ "BDMAP_00003424",
+ "BDMAP_00014632",
+ "BDMAP_00002677",
+ "BDMAP_00001776",
+ "BDMAP_00000259",
+ "BDMAP_00003329",
+ "BDMAP_00002742",
+ "BDMAP_00001703",
+ "BDMAP_00002184",
+ "BDMAP_00001676",
+ "BDMAP_00001911",
+ "BDMAP_00014534",
+ "BDMAP_00004495",
+ "BDMAP_00004175",
+ "BDMAP_00003184",
+ "BDMAP_00003450",
+ "BDMAP_00003923",
+ "BDMAP_00003388",
+ "BDMAP_00014560",
+ "BDMAP_00000807",
+ "BDMAP_00000725",
+ "BDMAP_00001706",
+ "BDMAP_00003343",
+ "BDMAP_00000276",
+ "BDMAP_00001664",
+ "BDMAP_00003206",
+ "BDMAP_00004869",
+ "BDMAP_00002589",
+ "BDMAP_00005081",
+ "BDMAP_00004605",
+ "BDMAP_00002275",
+ "BDMAP_00009367",
+ "BDMAP_00003409",
+ "BDMAP_00002041",
+ "BDMAP_00001841",
+ "BDMAP_00001077",
+ "BDMAP_00004956",
+ "BDMAP_00005152",
+ "BDMAP_00000574",
+ "BDMAP_00003250",
+ "BDMAP_00003208",
+ "BDMAP_00004184",
+ "BDMAP_00002433",
+ "BDMAP_00002437",
+ "BDMAP_00004325",
+ "BDMAP_00004917",
+ "BDMAP_00001563",
+ "BDMAP_00004039",
+ "BDMAP_00014493",
+ "BDMAP_00002250",
+ "BDMAP_00003631",
+ "BDMAP_00002990",
+ "BDMAP_00001982",
+ "BDMAP_00000935",
+ "BDMAP_00003514",
+ "BDMAP_00004925",
+ "BDMAP_00001188",
+ "BDMAP_00004624",
+ "BDMAP_00002806",
+ "BDMAP_00000436",
+ "BDMAP_00002706",
+ "BDMAP_00014584",
+ "BDMAP_00003829",
+ "BDMAP_00000603",
+ "BDMAP_00002362",
+ "BDMAP_00002981",
+ "BDMAP_00002264",
+ "BDMAP_00001071",
+ "BDMAP_00000418",
+ "BDMAP_00003382",
+ "BDMAP_00003220",
+ "BDMAP_00004268",
+ "BDMAP_00022448",
+ "BDMAP_00014636",
+ "BDMAP_00003996",
+ "BDMAP_00000671",
+ "BDMAP_00002663",
+ "BDMAP_00000373",
+ "BDMAP_00000159",
+ "BDMAP_00022446",
+ "BDMAP_00001803",
+ "BDMAP_00004888",
+ "BDMAP_00002630",
+ "BDMAP_00000279",
+ "BDMAP_00000245",
+ "BDMAP_00001720",
+ "BDMAP_00003516",
+ "BDMAP_00000611",
+ "BDMAP_00005005",
+ "BDMAP_00005639",
+ "BDMAP_00004793",
+ "BDMAP_00002310",
+ "BDMAP_00000338",
+ "BDMAP_00004982",
+ "BDMAP_00000420",
+ "BDMAP_00004131",
+ "BDMAP_00004253",
+ "BDMAP_00001483",
+ "BDMAP_00002564",
+ "BDMAP_00000197",
+ "BDMAP_00007398",
+ "BDMAP_00014619",
+ "BDMAP_00003230",
+ "BDMAP_00003984",
+ "BDMAP_00002830",
+ "BDMAP_00003186",
+ "BDMAP_00003979",
+ "BDMAP_00000851",
+ "BDMAP_00002707",
+ "BDMAP_00002807",
+ "BDMAP_00000471",
+ "BDMAP_00001458",
+ "BDMAP_00000186",
+ "BDMAP_00004015",
+ "BDMAP_00014618",
+ "BDMAP_00014538",
+ "BDMAP_00022477",
+ "BDMAP_00002705",
+ "BDMAP_00022428",
+ "BDMAP_00000023",
+ "BDMAP_00003553",
+ "BDMAP_00002194",
+ "BDMAP_00000874",
+ "BDMAP_00003535",
+ "BDMAP_00002694",
+ "BDMAP_00003889",
+ "BDMAP_00000902",
+ "BDMAP_00004815",
+ "BDMAP_00004487",
+ "BDMAP_00002872",
+ "BDMAP_00004839",
+ "BDMAP_00002205",
+ "BDMAP_00004979",
+ "BDMAP_00003019",
+ "BDMAP_00009277",
+ "BDMAP_00004195",
+ "BDMAP_00001246",
+ "BDMAP_00002425",
+ "BDMAP_00001739",
+ "BDMAP_00003336",
+ "BDMAP_00000646",
+ "BDMAP_00004775",
+ "BDMAP_00001434",
+ "BDMAP_00002696",
+ "BDMAP_00000423",
+ "BDMAP_00001421",
+ "BDMAP_00000528",
+ "BDMAP_00003385",
+ "BDMAP_00000499",
+ "BDMAP_00005148",
+ "BDMAP_00000805",
+ "BDMAP_00002609",
+ "BDMAP_00000240",
+ "BDMAP_00001544",
+ "BDMAP_00008903",
+ "BDMAP_00000660",
+ "BDMAP_00003524",
+ "BDMAP_00004151",
+ "BDMAP_00001679",
+ "BDMAP_00002394",
+ "BDMAP_00002538",
+ "BDMAP_00001860",
+ "BDMAP_00002012",
+ "BDMAP_00022419",
+ "BDMAP_00003412",
+ "BDMAP_00000809",
+ "BDMAP_00001966",
+ "BDMAP_00008388",
+ "BDMAP_00001438",
+ "BDMAP_00006043",
+ "BDMAP_00001878",
+ "BDMAP_00003626",
+ "BDMAP_00003133",
+ "BDMAP_00000113",
+ "BDMAP_00002581",
+ "BDMAP_00003832",
+ "BDMAP_00002446",
+ "BDMAP_00000304",
+ "BDMAP_00002340",
+ "BDMAP_00002306",
+ "BDMAP_00002936",
+ "BDMAP_00014580",
+ "BDMAP_00004625",
+ "BDMAP_00003898",
+ "BDMAP_00004630",
+ "BDMAP_00002488",
+ "BDMAP_00003795",
+ "BDMAP_00003748",
+ "BDMAP_00003370",
+ "BDMAP_00004398",
+ "BDMAP_00003429",
+ "BDMAP_00002797",
+ "BDMAP_00001504",
+ "BDMAP_00005140",
+ "BDMAP_00001193",
+ "BDMAP_00000518",
+ "BDMAP_00001950",
+ "BDMAP_00003190",
+ "BDMAP_00003722",
+ "BDMAP_00002828",
+ "BDMAP_00006472",
+ "BDMAP_00001749",
+ "BDMAP_00003520",
+ "BDMAP_00004316",
+ "BDMAP_00001041",
+ "BDMAP_00003615",
+ "BDMAP_00002675",
+ "BDMAP_00003952",
+ "BDMAP_00000642",
+ "BDMAP_00001310",
+ "BDMAP_00001487",
+ "BDMAP_00001762",
+ "BDMAP_00004232",
+ "BDMAP_00004108",
+ "BDMAP_00002143",
+ "BDMAP_00000102",
+ "BDMAP_00001637",
+ "BDMAP_00004130",
+ "BDMAP_00002704",
+ "BDMAP_00002495",
+ "BDMAP_00003672",
+ "BDMAP_00000867",
+ "BDMAP_00000035",
+ "BDMAP_00001644",
+ "BDMAP_00001632",
+ "BDMAP_00003932",
+ "BDMAP_00000236",
+ "BDMAP_00002178",
+ "BDMAP_00002731",
+ "BDMAP_00000542",
+ "BDMAP_00003536",
+ "BDMAP_00003097",
+ "BDMAP_00014567",
+ "BDMAP_00003478",
+ "BDMAP_00014637",
+ "BDMAP_00001557",
+ "BDMAP_00001325",
+ "BDMAP_00002921",
+ "BDMAP_00003334",
+ "BDMAP_00004964",
+ "BDMAP_00001671",
+ "BDMAP_00004737",
+ "BDMAP_00003347",
+ "BDMAP_00002598",
+ "BDMAP_00001772",
+ "BDMAP_00022455",
+ "BDMAP_00000469",
+ "BDMAP_00001242",
+ "BDMAP_00001035",
+ "BDMAP_00003103",
+ "BDMAP_00004579",
+ "BDMAP_00022422",
+ "BDMAP_00000546",
+ "BDMAP_00004049",
+ "BDMAP_00001451",
+ "BDMAP_00014569",
+ "BDMAP_00002232",
+ "BDMAP_00001929",
+ "BDMAP_00001898",
+ "BDMAP_00001460",
+ "BDMAP_00014495",
+ "BDMAP_00004372",
+ "BDMAP_00003447",
+ "BDMAP_00003043",
+ "BDMAP_00003886",
+ "BDMAP_00001490",
+ "BDMAP_00004216",
+ "BDMAP_00003377",
+ "BDMAP_00004489",
+ "BDMAP_00005092",
+ "BDMAP_00000463",
+ "BDMAP_00000848",
+ "BDMAP_00004581",
+ "BDMAP_00014572",
+ "BDMAP_00008084",
+ "BDMAP_00003976",
+ "BDMAP_00000043",
+ "BDMAP_00004969",
+ "BDMAP_00000452",
+ "BDMAP_00000112",
+ "BDMAP_00022427",
+ "BDMAP_00001411",
+ "BDMAP_00003008",
+ "BDMAP_00004491",
+ "BDMAP_00003354",
+ "BDMAP_00000254",
+ "BDMAP_00003236",
+ "BDMAP_00002942",
+ "BDMAP_00004405",
+ "BDMAP_00001561",
+ "BDMAP_00000081",
+ "BDMAP_00003687",
+ "BDMAP_00001238",
+ "BDMAP_00004097",
+ "BDMAP_00001540",
+ "BDMAP_00003268",
+ "BDMAP_00001869",
+ "BDMAP_00014552",
+ "BDMAP_00004016",
+ "BDMAP_00014633",
+ "BDMAP_00001332",
+ "BDMAP_00000778",
+ "BDMAP_00001112"
+ ],
+ "val": [
+ "BDMAP_00004281",
+ "BDMAP_00003481",
+ "BDMAP_00001786",
+ "BDMAP_00000101",
+ "BDMAP_00001813",
+ "BDMAP_00000615",
+ "BDMAP_00003170",
+ "BDMAP_00004378",
+ "BDMAP_00004704",
+ "BDMAP_00003439",
+ "BDMAP_00002717",
+ "BDMAP_00001981",
+ "BDMAP_00000100",
+ "BDMAP_00001018",
+ "BDMAP_00002214",
+ "BDMAP_00001198",
+ "BDMAP_00001962",
+ "BDMAP_00002463",
+ "BDMAP_00005139",
+ "BDMAP_00000831",
+ "BDMAP_00002955",
+ "BDMAP_00003272",
+ "BDMAP_00000745"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon.json
new file mode 100644
index 0000000000000000000000000000000000000000..b8b1a47188a1bd3aadcd2789dd182c8867a3b1da
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon.json
@@ -0,0 +1,134 @@
+[
+ {
+ "train": [
+ "colon_127",
+ "colon_193",
+ "colon_155",
+ "colon_022",
+ "colon_072",
+ "colon_119",
+ "colon_131",
+ "colon_144",
+ "colon_142",
+ "colon_069",
+ "colon_187",
+ "colon_137",
+ "colon_040",
+ "colon_008",
+ "colon_161",
+ "colon_202",
+ "colon_207",
+ "colon_038",
+ "colon_107",
+ "colon_091",
+ "colon_192",
+ "colon_145",
+ "colon_024",
+ "colon_039",
+ "colon_149",
+ "colon_012",
+ "colon_164",
+ "colon_099",
+ "colon_065",
+ "colon_009",
+ "colon_138",
+ "colon_102",
+ "colon_216",
+ "colon_126",
+ "colon_006",
+ "colon_095",
+ "colon_139",
+ "colon_212",
+ "colon_159",
+ "colon_061",
+ "colon_141",
+ "colon_168",
+ "colon_129",
+ "colon_218",
+ "colon_028",
+ "colon_185",
+ "colon_171",
+ "colon_046",
+ "colon_219",
+ "colon_089",
+ "colon_001",
+ "colon_050",
+ "colon_088",
+ "colon_172",
+ "colon_194",
+ "colon_112",
+ "colon_148",
+ "colon_201",
+ "colon_136",
+ "colon_075",
+ "colon_163",
+ "colon_181",
+ "colon_054",
+ "colon_122",
+ "colon_030",
+ "colon_157",
+ "colon_203",
+ "colon_215",
+ "colon_134",
+ "colon_106",
+ "colon_133",
+ "colon_033",
+ "colon_213",
+ "colon_041",
+ "colon_045",
+ "colon_005",
+ "colon_036",
+ "colon_100",
+ "colon_120",
+ "colon_217",
+ "colon_042",
+ "colon_077",
+ "colon_064",
+ "colon_124",
+ "colon_007",
+ "colon_078",
+ "colon_011",
+ "colon_059",
+ "colon_066",
+ "colon_205",
+ "colon_114",
+ "colon_031",
+ "colon_140",
+ "colon_104",
+ "colon_108",
+ "colon_081",
+ "colon_162",
+ "colon_208",
+ "colon_032",
+ "colon_165",
+ "colon_118"
+ ],
+ "val": [
+ "colon_214",
+ "colon_206",
+ "colon_026",
+ "colon_051",
+ "colon_196",
+ "colon_027",
+ "colon_098",
+ "colon_053",
+ "colon_154",
+ "colon_175",
+ "colon_092",
+ "colon_143",
+ "colon_103",
+ "colon_086",
+ "colon_166",
+ "colon_176",
+ "colon_117",
+ "colon_096",
+ "colon_015",
+ "colon_115",
+ "colon_169",
+ "colon_074",
+ "colon_111",
+ "colon_029",
+ "colon_025"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon_bdmap.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon_bdmap.json
new file mode 100644
index 0000000000000000000000000000000000000000..ba9ae29d77ae00575d76f1007f36fc0370153665
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_colon_bdmap.json
@@ -0,0 +1,134 @@
+[
+ {
+ "train": [
+ "BDMAP_00004147",
+ "BDMAP_00004165",
+ "BDMAP_00002598",
+ "BDMAP_00003268",
+ "BDMAP_00005160",
+ "BDMAP_00003333",
+ "BDMAP_00003827",
+ "BDMAP_00004894",
+ "BDMAP_00002318",
+ "BDMAP_00002739",
+ "BDMAP_00000939",
+ "BDMAP_00004384",
+ "BDMAP_00000030",
+ "BDMAP_00002730",
+ "BDMAP_00000942",
+ "BDMAP_00000069",
+ "BDMAP_00004676",
+ "BDMAP_00003634",
+ "BDMAP_00000373",
+ "BDMAP_00003357",
+ "BDMAP_00001865",
+ "BDMAP_00003299",
+ "BDMAP_00001209",
+ "BDMAP_00001215",
+ "BDMAP_00002230",
+ "BDMAP_00002199",
+ "BDMAP_00002401",
+ "BDMAP_00000873",
+ "BDMAP_00002152",
+ "BDMAP_00002828",
+ "BDMAP_00002451",
+ "BDMAP_00000913",
+ "BDMAP_00001078",
+ "BDMAP_00001024",
+ "BDMAP_00001982",
+ "BDMAP_00003560",
+ "BDMAP_00004196",
+ "BDMAP_00004431",
+ "BDMAP_00002875",
+ "BDMAP_00004604",
+ "BDMAP_00004450",
+ "BDMAP_00002305",
+ "BDMAP_00005001",
+ "BDMAP_00004374",
+ "BDMAP_00001102",
+ "BDMAP_00001917",
+ "BDMAP_00002846",
+ "BDMAP_00001732",
+ "BDMAP_00004910",
+ "BDMAP_00000552",
+ "BDMAP_00002103",
+ "BDMAP_00002704",
+ "BDMAP_00004764",
+ "BDMAP_00003510",
+ "BDMAP_00003972",
+ "BDMAP_00003113",
+ "BDMAP_00004491",
+ "BDMAP_00004615",
+ "BDMAP_00005067",
+ "BDMAP_00003412",
+ "BDMAP_00001809",
+ "BDMAP_00001785",
+ "BDMAP_00000828",
+ "BDMAP_00002039",
+ "BDMAP_00004493",
+ "BDMAP_00000851",
+ "BDMAP_00002185",
+ "BDMAP_00001237",
+ "BDMAP_00004163",
+ "BDMAP_00003373",
+ "BDMAP_00000568",
+ "BDMAP_00001737",
+ "BDMAP_00002986",
+ "BDMAP_00000716",
+ "BDMAP_00003327",
+ "BDMAP_00000690",
+ "BDMAP_00000881",
+ "BDMAP_00004121",
+ "BDMAP_00002845",
+ "BDMAP_00004624",
+ "BDMAP_00003109",
+ "BDMAP_00004876",
+ "BDMAP_00005005",
+ "BDMAP_00003172",
+ "BDMAP_00001924",
+ "BDMAP_00005073",
+ "BDMAP_00003680",
+ "BDMAP_00000874",
+ "BDMAP_00000132",
+ "BDMAP_00001438",
+ "BDMAP_00004650",
+ "BDMAP_00005016",
+ "BDMAP_00002924",
+ "BDMAP_00002458",
+ "BDMAP_00000190",
+ "BDMAP_00003640",
+ "BDMAP_00001514",
+ "BDMAP_00003031",
+ "BDMAP_00001985",
+ "BDMAP_00004415",
+ "BDMAP_00001015"
+ ],
+ "val": [
+ "BDMAP_00000138",
+ "BDMAP_00000152",
+ "BDMAP_00000264",
+ "BDMAP_00000345",
+ "BDMAP_00000547",
+ "BDMAP_00001095",
+ "BDMAP_00001212",
+ "BDMAP_00001426",
+ "BDMAP_00001445",
+ "BDMAP_00001598",
+ "BDMAP_00001769",
+ "BDMAP_00001835",
+ "BDMAP_00001875",
+ "BDMAP_00002253",
+ "BDMAP_00002465",
+ "BDMAP_00002612",
+ "BDMAP_00002654",
+ "BDMAP_00003111",
+ "BDMAP_00003564",
+ "BDMAP_00003847",
+ "BDMAP_00003890",
+ "BDMAP_00003946",
+ "BDMAP_00004558",
+ "BDMAP_00004783",
+ "BDMAP_00005170"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_eso_bdmap.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_eso_bdmap.json
new file mode 100644
index 0000000000000000000000000000000000000000..c84205e041e041ec4d524ae54cc5ad9cdac6e321
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_eso_bdmap.json
@@ -0,0 +1,162 @@
+[
+ {
+ "train": [
+ "BDMAP_00014516",
+ "BDMAP_00014627",
+ "BDMAP_00014630",
+ "BDMAP_00014552",
+ "BDMAP_00014557",
+ "BDMAP_00014629",
+ "BDMAP_00014507",
+ "BDMAP_00014618",
+ "BDMAP_00014569",
+ "BDMAP_00014493",
+ "BDMAP_00014633",
+ "BDMAP_00014576",
+ "BDMAP_00014581",
+ "BDMAP_00014635",
+ "BDMAP_00014521",
+ "BDMAP_00014506",
+ "BDMAP_00014517",
+ "BDMAP_00014567",
+ "BDMAP_00014636",
+ "BDMAP_00014520",
+ "BDMAP_00014582",
+ "BDMAP_00014536",
+ "BDMAP_00014525",
+ "BDMAP_00014486",
+ "BDMAP_00014496",
+ "BDMAP_00014545",
+ "BDMAP_00014547",
+ "BDMAP_00014490",
+ "BDMAP_00014625",
+ "BDMAP_00014513",
+ "BDMAP_00014535",
+ "BDMAP_00014632",
+ "BDMAP_00014541",
+ "BDMAP_00014522",
+ "BDMAP_00014508",
+ "BDMAP_00014578",
+ "BDMAP_00014494",
+ "BDMAP_00014562",
+ "BDMAP_00014534",
+ "BDMAP_00014553",
+ "BDMAP_00014566",
+ "BDMAP_00014542",
+ "BDMAP_00014612",
+ "BDMAP_00014614",
+ "BDMAP_00014637",
+ "BDMAP_00014631",
+ "BDMAP_00014619",
+ "BDMAP_00014498",
+ "BDMAP_00014570",
+ "BDMAP_00014624",
+ "BDMAP_00014503",
+ "BDMAP_00014573",
+ "BDMAP_00014546",
+ "BDMAP_00014626",
+ "BDMAP_00014526",
+ "BDMAP_00014488",
+ "BDMAP_00014524",
+ "BDMAP_00014528",
+ "BDMAP_00014617",
+ "BDMAP_00014518",
+ "BDMAP_00014571",
+ "BDMAP_00014551",
+ "BDMAP_00014515",
+ "BDMAP_00014561",
+ "BDMAP_00014616",
+ "BDMAP_00014580",
+ "BDMAP_00014492",
+ "BDMAP_00014514",
+ "BDMAP_00014533",
+ "BDMAP_00014620",
+ "BDMAP_00014558",
+ "BDMAP_00014610",
+ "BDMAP_00014510",
+ "BDMAP_00014512",
+ "BDMAP_00014583",
+ "BDMAP_00014628",
+ "BDMAP_00014579",
+ "BDMAP_00014537",
+ "BDMAP_00014615",
+ "BDMAP_00014568",
+ "BDMAP_00014539",
+ "BDMAP_00014556",
+ "BDMAP_00014491",
+ "BDMAP_00014495",
+ "BDMAP_00014549",
+ "BDMAP_00014554",
+ "BDMAP_00014565",
+ "BDMAP_00014504",
+ "BDMAP_00014485",
+ "BDMAP_00014575",
+ "BDMAP_00014563",
+ "BDMAP_00014574",
+ "BDMAP_00014572",
+ "BDMAP_00014499",
+ "BDMAP_00014559",
+ "BDMAP_00014530",
+ "BDMAP_00014505",
+ "BDMAP_00014532",
+ "BDMAP_00014564",
+ "BDMAP_00014497",
+ "BDMAP_00014538",
+ "BDMAP_00014519",
+ "BDMAP_00014544",
+ "BDMAP_00014555",
+ "BDMAP_00014527",
+ "BDMAP_00014611",
+ "BDMAP_00014577",
+ "BDMAP_00014634",
+ "BDMAP_00014613",
+ "BDMAP_00014584",
+ "BDMAP_00014509",
+ "BDMAP_00014523",
+ "BDMAP_00014543",
+ "BDMAP_00014502",
+ "BDMAP_00014622",
+ "BDMAP_00014540",
+ "BDMAP_00014500",
+ "BDMAP_00014548",
+ "BDMAP_00014529",
+ "BDMAP_00014550",
+ "BDMAP_00014623",
+ "BDMAP_00014487",
+ "BDMAP_00014531",
+ "BDMAP_00014501",
+ "BDMAP_00014484",
+ "BDMAP_00014489",
+ "BDMAP_00014511",
+ "BDMAP_00014560",
+ "BDMAP_00014621"
+ ],
+ "val": [
+ "BDMAP_00014585",
+ "BDMAP_00014586",
+ "BDMAP_00014587",
+ "BDMAP_00014588",
+ "BDMAP_00014589",
+ "BDMAP_00014590",
+ "BDMAP_00014591",
+ "BDMAP_00014592",
+ "BDMAP_00014593",
+ "BDMAP_00014594",
+ "BDMAP_00014595",
+ "BDMAP_00014596",
+ "BDMAP_00014597",
+ "BDMAP_00014598",
+ "BDMAP_00014599",
+ "BDMAP_00014600",
+ "BDMAP_00014601",
+ "BDMAP_00014602",
+ "BDMAP_00014603",
+ "BDMAP_00014604",
+ "BDMAP_00014605",
+ "BDMAP_00014606",
+ "BDMAP_00014607",
+ "BDMAP_00014608",
+ "BDMAP_00014609"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_esophagus.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_esophagus.json
new file mode 100644
index 0000000000000000000000000000000000000000..34fc7d7be005319469b601dfe3b3ecc690808231
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_esophagus.json
@@ -0,0 +1,134 @@
+[
+ {
+ "train": [
+ "BDMAP_esophagus_00000001",
+ "BDMAP_esophagus_00000002",
+ "BDMAP_esophagus_00000003",
+ "BDMAP_esophagus_00000004",
+ "BDMAP_esophagus_00000005",
+ "BDMAP_esophagus_00000006",
+ "BDMAP_esophagus_00000007",
+ "BDMAP_esophagus_00000008",
+ "BDMAP_esophagus_00000009",
+ "BDMAP_esophagus_00000010",
+ "BDMAP_esophagus_00000011",
+ "BDMAP_esophagus_00000012",
+ "BDMAP_esophagus_00000013",
+ "BDMAP_esophagus_00000014",
+ "BDMAP_esophagus_00000015",
+ "BDMAP_esophagus_00000016",
+ "BDMAP_esophagus_00000017",
+ "BDMAP_esophagus_00000018",
+ "BDMAP_esophagus_00000019",
+ "BDMAP_esophagus_00000020",
+ "BDMAP_esophagus_00000021",
+ "BDMAP_esophagus_00000022",
+ "BDMAP_esophagus_00000023",
+ "BDMAP_esophagus_00000024",
+ "BDMAP_esophagus_00000025",
+ "BDMAP_esophagus_00000026",
+ "BDMAP_esophagus_00000027",
+ "BDMAP_esophagus_00000028",
+ "BDMAP_esophagus_00000029",
+ "BDMAP_esophagus_00000030",
+ "BDMAP_esophagus_00000031",
+ "BDMAP_esophagus_00000032",
+ "BDMAP_esophagus_00000033",
+ "BDMAP_esophagus_00000034",
+ "BDMAP_esophagus_00000035",
+ "BDMAP_esophagus_00000036",
+ "BDMAP_esophagus_00000037",
+ "BDMAP_esophagus_00000038",
+ "BDMAP_esophagus_00000039",
+ "BDMAP_esophagus_00000040",
+ "BDMAP_esophagus_00000041",
+ "BDMAP_esophagus_00000042",
+ "BDMAP_esophagus_00000043",
+ "BDMAP_esophagus_00000044",
+ "BDMAP_esophagus_00000045",
+ "BDMAP_esophagus_00000046",
+ "BDMAP_esophagus_00000047",
+ "BDMAP_esophagus_00000048",
+ "BDMAP_esophagus_00000049",
+ "BDMAP_esophagus_00000050",
+ "BDMAP_esophagus_00000051",
+ "BDMAP_esophagus_00000052",
+ "BDMAP_esophagus_00000053",
+ "BDMAP_esophagus_00000054",
+ "BDMAP_esophagus_00000055",
+ "BDMAP_esophagus_00000056",
+ "BDMAP_esophagus_00000057",
+ "BDMAP_esophagus_00000058",
+ "BDMAP_esophagus_00000059",
+ "BDMAP_esophagus_00000060",
+ "BDMAP_esophagus_00000061",
+ "BDMAP_esophagus_00000062",
+ "BDMAP_esophagus_00000063",
+ "BDMAP_esophagus_00000064",
+ "BDMAP_esophagus_00000065",
+ "BDMAP_esophagus_00000066",
+ "BDMAP_esophagus_00000067",
+ "BDMAP_esophagus_00000068",
+ "BDMAP_esophagus_00000069",
+ "BDMAP_esophagus_00000070",
+ "BDMAP_esophagus_00000071",
+ "BDMAP_esophagus_00000072",
+ "BDMAP_esophagus_00000073",
+ "BDMAP_esophagus_00000074",
+ "BDMAP_esophagus_00000075",
+ "BDMAP_esophagus_00000076",
+ "BDMAP_esophagus_00000077",
+ "BDMAP_esophagus_00000078",
+ "BDMAP_esophagus_00000079",
+ "BDMAP_esophagus_00000080",
+ "BDMAP_esophagus_00000081",
+ "BDMAP_esophagus_00000082",
+ "BDMAP_esophagus_00000083",
+ "BDMAP_esophagus_00000084",
+ "BDMAP_esophagus_00000085",
+ "BDMAP_esophagus_00000086",
+ "BDMAP_esophagus_00000087",
+ "BDMAP_esophagus_00000088",
+ "BDMAP_esophagus_00000089",
+ "BDMAP_esophagus_00000090",
+ "BDMAP_esophagus_00000091",
+ "BDMAP_esophagus_00000092",
+ "BDMAP_esophagus_00000093",
+ "BDMAP_esophagus_00000094",
+ "BDMAP_esophagus_00000095",
+ "BDMAP_esophagus_00000096",
+ "BDMAP_esophagus_00000097",
+ "BDMAP_esophagus_00000098",
+ "BDMAP_esophagus_00000099",
+ "BDMAP_esophagus_00000100",
+ "BDMAP_esophagus_00000101"
+ ],
+ "val": [
+ "BDMAP_esophagus_00000102",
+ "BDMAP_esophagus_00000103",
+ "BDMAP_esophagus_00000104",
+ "BDMAP_esophagus_00000105",
+ "BDMAP_esophagus_00000106",
+ "BDMAP_esophagus_00000107",
+ "BDMAP_esophagus_00000108",
+ "BDMAP_esophagus_00000109",
+ "BDMAP_esophagus_00000110",
+ "BDMAP_esophagus_00000111",
+ "BDMAP_esophagus_00000112",
+ "BDMAP_esophagus_00000113",
+ "BDMAP_esophagus_00000114",
+ "BDMAP_esophagus_00000115",
+ "BDMAP_esophagus_00000116",
+ "BDMAP_esophagus_00000117",
+ "BDMAP_esophagus_00000118",
+ "BDMAP_esophagus_00000119",
+ "BDMAP_esophagus_00000120",
+ "BDMAP_esophagus_00000121",
+ "BDMAP_esophagus_00000122",
+ "BDMAP_esophagus_00000123",
+ "BDMAP_esophagus_00000124",
+ "BDMAP_esophagus_00000125",
+ "BDMAP_esophagus_00000126"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_new.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_new.json
new file mode 100644
index 0000000000000000000000000000000000000000..78ccb8be6929194efebb21c6c811aa3ea4417260
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_new.json
@@ -0,0 +1,1800 @@
+[
+ {
+ "train": [
+ "BDMAP_00004015",
+ "BDMAP_00000438",
+ "BDMAP_00002815",
+ "BDMAP_00002855",
+ "BDMAP_00000714",
+ "BDMAP_00003438",
+ "BDMAP_00001214",
+ "BDMAP_00005444",
+ "BDMAP_00001584",
+ "BDMAP_00002232",
+ "BDMAP_00002332",
+ "BDMAP_00003525",
+ "BDMAP_00003592",
+ "BDMAP_00000859",
+ "BDMAP_00000338",
+ "BDMAP_00002947",
+ "BDMAP_00000732",
+ "BDMAP_00002244",
+ "BDMAP_00004297",
+ "BDMAP_00004447",
+ "BDMAP_00002313",
+ "BDMAP_00004672",
+ "BDMAP_00004198",
+ "BDMAP_00008525",
+ "BDMAP_00001704",
+ "BDMAP_00001504",
+ "BDMAP_00000589",
+ "BDMAP_00004231",
+ "BDMAP_00005078",
+ "BDMAP_00003900",
+ "BDMAP_00003508",
+ "BDMAP_00005169",
+ "BDMAP_00008526",
+ "BDMAP_00002362",
+ "BDMAP_00004964",
+ "BDMAP_00001565",
+ "BDMAP_00002295",
+ "BDMAP_00003812",
+ "BDMAP_00003254",
+ "BDMAP_00009367",
+ "BDMAP_00000324",
+ "BDMAP_00001096",
+ "BDMAP_00000696",
+ "BDMAP_00000972",
+ "BDMAP_00002216",
+ "BDMAP_00000087",
+ "BDMAP_00000940",
+ "BDMAP_00004106",
+ "BDMAP_00002126",
+ "BDMAP_00001288",
+ "BDMAP_00003479",
+ "BDMAP_00000416",
+ "BDMAP_00000192",
+ "BDMAP_00002076",
+ "BDMAP_00002387",
+ "BDMAP_00002411",
+ "BDMAP_00001441",
+ "BDMAP_00004796",
+ "BDMAP_00004804",
+ "BDMAP_00001836",
+ "BDMAP_00001701",
+ "BDMAP_00006623",
+ "BDMAP_00005185",
+ "BDMAP_00001419",
+ "BDMAP_00003133",
+ "BDMAP_00003781",
+ "BDMAP_00004641",
+ "BDMAP_00002896",
+ "BDMAP_00000093",
+ "BDMAP_00000614",
+ "BDMAP_00000447",
+ "BDMAP_00001912",
+ "BDMAP_00001931",
+ "BDMAP_00002233",
+ "BDMAP_00001921",
+ "BDMAP_00007200",
+ "BDMAP_00001408",
+ "BDMAP_00005022",
+ "BDMAP_00000052",
+ "BDMAP_00004398",
+ "BDMAP_00002688",
+ "BDMAP_00005141",
+ "BDMAP_00002278",
+ "BDMAP_00001521",
+ "BDMAP_00007398",
+ "BDMAP_00004880",
+ "BDMAP_00003889",
+ "BDMAP_00000771",
+ "BDMAP_00003451",
+ "BDMAP_00002237",
+ "BDMAP_00004982",
+ "BDMAP_00000618",
+ "BDMAP_00000956",
+ "BDMAP_00001862",
+ "BDMAP_00002188",
+ "BDMAP_00003822",
+ "BDMAP_00002460",
+ "BDMAP_00002793",
+ "BDMAP_00002120",
+ "BDMAP_00003443",
+ "BDMAP_00003551",
+ "BDMAP_00004077",
+ "BDMAP_00002475",
+ "BDMAP_00000236",
+ "BDMAP_00004229",
+ "BDMAP_00002945",
+ "BDMAP_00003824",
+ "BDMAP_00004549",
+ "BDMAP_00002523",
+ "BDMAP_00006534",
+ "BDMAP_00004735",
+ "BDMAP_00003934",
+ "BDMAP_00004359",
+ "BDMAP_00000541",
+ "BDMAP_00003326",
+ "BDMAP_00004511",
+ "BDMAP_00001590",
+ "BDMAP_00001823",
+ "BDMAP_00000470",
+ "BDMAP_00001828",
+ "BDMAP_00003017",
+ "BDMAP_00002227",
+ "BDMAP_00003347",
+ "BDMAP_00002402",
+ "BDMAP_00004097",
+ "BDMAP_00003853",
+ "BDMAP_00003543",
+ "BDMAP_00003744",
+ "BDMAP_00003400",
+ "BDMAP_00005075",
+ "BDMAP_00002616",
+ "BDMAP_00003244",
+ "BDMAP_00003633",
+ "BDMAP_00002021",
+ "BDMAP_00004773",
+ "BDMAP_00000037",
+ "BDMAP_00002309",
+ "BDMAP_00003356",
+ "BDMAP_00000774",
+ "BDMAP_00005064",
+ "BDMAP_00003385",
+ "BDMAP_00000993",
+ "BDMAP_00005092",
+ "BDMAP_00000715",
+ "BDMAP_00004262",
+ "BDMAP_00004719",
+ "BDMAP_00003168",
+ "BDMAP_00002250",
+ "BDMAP_00004264",
+ "BDMAP_00001632",
+ "BDMAP_00000388",
+ "BDMAP_00004286",
+ "BDMAP_00000154",
+ "BDMAP_00001461",
+ "BDMAP_00000683",
+ "BDMAP_00000309",
+ "BDMAP_00001125",
+ "BDMAP_00001898",
+ "BDMAP_00001845",
+ "BDMAP_00001464",
+ "BDMAP_00003658",
+ "BDMAP_00002844",
+ "BDMAP_00003427",
+ "BDMAP_00004636",
+ "BDMAP_00004129",
+ "BDMAP_00001842",
+ "BDMAP_00001646",
+ "BDMAP_00006043",
+ "BDMAP_00004288",
+ "BDMAP_00003631",
+ "BDMAP_00003440",
+ "BDMAP_00004550",
+ "BDMAP_00005070",
+ "BDMAP_00004829",
+ "BDMAP_00000225",
+ "BDMAP_00004060",
+ "BDMAP_00001092",
+ "BDMAP_00002619",
+ "BDMAP_00000701",
+ "BDMAP_00001247",
+ "BDMAP_00002304",
+ "BDMAP_00008128",
+ "BDMAP_00003376",
+ "BDMAP_00000431",
+ "BDMAP_00004546",
+ "BDMAP_00005898",
+ "BDMAP_00003685",
+ "BDMAP_00004992",
+ "BDMAP_00004954",
+ "BDMAP_00004494",
+ "BDMAP_00001617",
+ "BDMAP_00003886",
+ "BDMAP_00003776",
+ "BDMAP_00000692",
+ "BDMAP_00003840",
+ "BDMAP_00001414",
+ "BDMAP_00003277",
+ "BDMAP_00004969",
+ "BDMAP_00000623",
+ "BDMAP_00004847",
+ "BDMAP_00003590",
+ "BDMAP_00001712",
+ "BDMAP_00004895",
+ "BDMAP_00004651",
+ "BDMAP_00001605",
+ "BDMAP_00004183",
+ "BDMAP_00003918",
+ "BDMAP_00002029",
+ "BDMAP_00001597",
+ "BDMAP_00003612",
+ "BDMAP_00003138",
+ "BDMAP_00000558",
+ "BDMAP_00001905",
+ "BDMAP_00001736",
+ "BDMAP_00005063",
+ "BDMAP_00000391",
+ "BDMAP_00001440",
+ "BDMAP_00003613",
+ "BDMAP_00004841",
+ "BDMAP_00004917",
+ "BDMAP_00003329",
+ "BDMAP_00001331",
+ "BDMAP_00002737",
+ "BDMAP_00000197",
+ "BDMAP_00006472",
+ "BDMAP_00003650",
+ "BDMAP_00003260",
+ "BDMAP_00001564",
+ "BDMAP_00003396",
+ "BDMAP_00001057",
+ "BDMAP_00000462",
+ "BDMAP_00003657",
+ "BDMAP_00002580",
+ "BDMAP_00004541",
+ "BDMAP_00000809",
+ "BDMAP_00004023",
+ "BDMAP_00001637",
+ "BDMAP_00004885",
+ "BDMAP_00004184",
+ "BDMAP_00000855",
+ "BDMAP_00005108",
+ "BDMAP_00003769",
+ "BDMAP_00003215",
+ "BDMAP_00003036",
+ "BDMAP_00002171",
+ "BDMAP_00002298",
+ "BDMAP_00001040",
+ "BDMAP_00001368",
+ "BDMAP_00002758",
+ "BDMAP_00000744",
+ "BDMAP_00006533",
+ "BDMAP_00000542",
+ "BDMAP_00004843",
+ "BDMAP_00001804",
+ "BDMAP_00001806",
+ "BDMAP_00000243",
+ "BDMAP_00009738",
+ "BDMAP_00000882",
+ "BDMAP_00001175",
+ "BDMAP_00005037",
+ "BDMAP_00003319",
+ "BDMAP_00003598",
+ "BDMAP_00002829",
+ "BDMAP_00001754",
+ "BDMAP_00001476",
+ "BDMAP_00000411",
+ "BDMAP_00004514",
+ "BDMAP_00001545",
+ "BDMAP_00004293",
+ "BDMAP_00004927",
+ "BDMAP_00001618",
+ "BDMAP_00002690",
+ "BDMAP_00003130",
+ "BDMAP_00000427",
+ "BDMAP_00003141",
+ "BDMAP_00003483",
+ "BDMAP_00005020",
+ "BDMAP_00001067",
+ "BDMAP_00001523",
+ "BDMAP_00005140",
+ "BDMAP_00002863",
+ "BDMAP_00001649",
+ "BDMAP_00003683",
+ "BDMAP_00002328",
+ "BDMAP_00004295",
+ "BDMAP_00000676",
+ "BDMAP_00001064",
+ "BDMAP_00004793",
+ "BDMAP_00000442",
+ "BDMAP_00003811",
+ "BDMAP_00002446",
+ "BDMAP_00003456",
+ "BDMAP_00003614",
+ "BDMAP_00004744",
+ "BDMAP_00000037",
+ "BDMAP_00004838",
+ "BDMAP_00003441",
+ "BDMAP_00002933",
+ "BDMAP_00002834",
+ "BDMAP_00003178",
+ "BDMAP_00001413",
+ "BDMAP_00000129",
+ "BDMAP_00003613",
+ "BDMAP_00000516",
+ "BDMAP_00000039",
+ "BDMAP_00000008",
+ "BDMAP_00003032",
+ "BDMAP_00001443",
+ "BDMAP_00004482",
+ "BDMAP_00003300",
+ "BDMAP_00004039",
+ "BDMAP_00002251",
+ "BDMAP_00000626",
+ "BDMAP_00001128",
+ "BDMAP_00004712",
+ "BDMAP_00000159",
+ "BDMAP_00003364",
+ "BDMAP_00002609",
+ "BDMAP_00002511",
+ "BDMAP_00003619",
+ "BDMAP_00000843",
+ "BDMAP_00003337",
+ "BDMAP_00003638",
+ "BDMAP_00003976",
+ "BDMAP_00001654",
+ "BDMAP_00002040",
+ "BDMAP_00001402",
+ "BDMAP_00003183",
+ "BDMAP_00003250",
+ "BDMAP_00001747",
+ "BDMAP_00003083",
+ "BDMAP_00004193",
+ "BDMAP_00001223",
+ "BDMAP_00002198",
+ "BDMAP_00004101",
+ "BDMAP_00002488",
+ "BDMAP_00001283",
+ "BDMAP_00005171",
+ "BDMAP_00002695",
+ "BDMAP_00003072",
+ "BDMAP_00003762",
+ "BDMAP_00000285",
+ "BDMAP_00003143",
+ "BDMAP_00003910",
+ "BDMAP_00002133",
+ "BDMAP_00002440",
+ "BDMAP_00001800",
+ "BDMAP_00003601",
+ "BDMAP_00003531",
+ "BDMAP_00002434",
+ "BDMAP_00001383",
+ "BDMAP_00001619",
+ "BDMAP_00004763",
+ "BDMAP_00002186",
+ "BDMAP_00001391",
+ "BDMAP_00000926",
+ "BDMAP_00005192",
+ "BDMAP_00002711",
+ "BDMAP_00004481",
+ "BDMAP_00004887",
+ "BDMAP_00004467",
+ "BDMAP_00001944",
+ "BDMAP_00003258",
+ "BDMAP_00005174",
+ "BDMAP_00001450",
+ "BDMAP_00004265",
+ "BDMAP_00002363",
+ "BDMAP_00001188",
+ "BDMAP_00002953",
+ "BDMAP_00003816",
+ "BDMAP_00004033",
+ "BDMAP_00001563",
+ "BDMAP_00004420",
+ "BDMAP_00004722",
+ "BDMAP_00002710",
+ "BDMAP_00002417",
+ "BDMAP_00001647",
+ "BDMAP_00001376",
+ "BDMAP_00004693",
+ "BDMAP_00000646",
+ "BDMAP_00003199",
+ "BDMAP_00000382",
+ "BDMAP_00004551",
+ "BDMAP_00002851",
+ "BDMAP_00002407",
+ "BDMAP_00003054",
+ "BDMAP_00004068",
+ "BDMAP_00002065",
+ "BDMAP_00001068",
+ "BDMAP_00000320",
+ "BDMAP_00004074",
+ "BDMAP_00001517",
+ "BDMAP_00000533",
+ "BDMAP_00000751",
+ "BDMAP_00000240",
+ "BDMAP_00000980",
+ "BDMAP_00000868",
+ "BDMAP_00001620",
+ "BDMAP_00002574",
+ "BDMAP_00000161",
+ "BDMAP_00004144",
+ "BDMAP_00000435",
+ "BDMAP_00003615",
+ "BDMAP_00004253",
+ "BDMAP_00001434",
+ "BDMAP_00002570",
+ "BDMAP_00000279",
+ "BDMAP_00004331",
+ "BDMAP_00004339",
+ "BDMAP_00002302",
+ "BDMAP_00003600",
+ "BDMAP_00000687",
+ "BDMAP_00003943",
+ "BDMAP_00000916",
+ "BDMAP_00000867",
+ "BDMAP_00000355",
+ "BDMAP_00001496",
+ "BDMAP_00003682",
+ "BDMAP_00000062",
+ "BDMAP_00004616",
+ "BDMAP_00003193",
+ "BDMAP_00001929",
+ "BDMAP_00001184",
+ "BDMAP_00003861",
+ "BDMAP_00000234",
+ "BDMAP_00001480",
+ "BDMAP_00001378",
+ "BDMAP_00001218",
+ "BDMAP_00000465",
+ "BDMAP_00004679",
+ "BDMAP_00003447",
+ "BDMAP_00000883",
+ "BDMAP_00000699",
+ "BDMAP_00002285",
+ "BDMAP_00000117",
+ "BDMAP_00000428",
+ "BDMAP_00002111",
+ "BDMAP_00001998",
+ "BDMAP_00004102",
+ "BDMAP_00000359",
+ "BDMAP_00000356",
+ "BDMAP_00003153",
+ "BDMAP_00001077",
+ "BDMAP_00001607",
+ "BDMAP_00003239",
+ "BDMAP_00000710",
+ "BDMAP_00004671",
+ "BDMAP_00004011",
+ "BDMAP_00005081",
+ "BDMAP_00002012",
+ "BDMAP_00003998",
+ "BDMAP_00004350",
+ "BDMAP_00001020",
+ "BDMAP_00000532",
+ "BDMAP_00000364",
+ "BDMAP_00001614",
+ "BDMAP_00001870",
+ "BDMAP_00001634",
+ "BDMAP_00000662",
+ "BDMAP_00000812",
+ "BDMAP_00002596",
+ "BDMAP_00003200",
+ "BDMAP_00000104",
+ "BDMAP_00003558",
+ "BDMAP_00001027",
+ "BDMAP_00003749",
+ "BDMAP_00000908",
+ "BDMAP_00002698",
+ "BDMAP_00001817",
+ "BDMAP_00000963",
+ "BDMAP_00000423",
+ "BDMAP_00004592",
+ "BDMAP_00002068",
+ "BDMAP_00005154",
+ "BDMAP_00004395",
+ "BDMAP_00000366",
+ "BDMAP_00001518",
+ "BDMAP_00000258",
+ "BDMAP_00002807",
+ "BDMAP_00003281",
+ "BDMAP_00003038",
+ "BDMAP_00002331",
+ "BDMAP_00002433",
+ "BDMAP_00001656",
+ "BDMAP_00000219",
+ "BDMAP_00003701",
+ "BDMAP_00003363",
+ "BDMAP_00003747",
+ "BDMAP_00000137",
+ "BDMAP_00002306",
+ "BDMAP_00005105",
+ "BDMAP_00003207",
+ "BDMAP_00002582",
+ "BDMAP_00000713",
+ "BDMAP_00000353",
+ "BDMAP_00004359",
+ "BDMAP_00002760",
+ "BDMAP_00005006",
+ "BDMAP_00003646",
+ "BDMAP_00001305",
+ "BDMAP_00004311",
+ "BDMAP_00001906",
+ "BDMAP_00002041",
+ "BDMAP_00002404",
+ "BDMAP_00004130",
+ "BDMAP_00002977",
+ "BDMAP_00003252",
+ "BDMAP_00002930",
+ "BDMAP_00002484",
+ "BDMAP_00001169",
+ "BDMAP_00003063",
+ "BDMAP_00000889",
+ "BDMAP_00000445",
+ "BDMAP_00003839",
+ "BDMAP_00002322",
+ "BDMAP_00002017",
+ "BDMAP_00004194",
+ "BDMAP_00001677",
+ "BDMAP_00003508",
+ "BDMAP_00003312",
+ "BDMAP_00004327",
+ "BDMAP_00001475",
+ "BDMAP_00003415",
+ "BDMAP_00002718",
+ "BDMAP_00004131",
+ "BDMAP_00004968",
+ "BDMAP_00002864",
+ "BDMAP_00000432",
+ "BDMAP_00000887",
+ "BDMAP_00004195",
+ "BDMAP_00004345",
+ "BDMAP_00002260",
+ "BDMAP_00002707",
+ "BDMAP_00003949",
+ "BDMAP_00001799",
+ "BDMAP_00004368",
+ "BDMAP_00003711",
+ "BDMAP_00001710",
+ "BDMAP_00004150",
+ "BDMAP_00004259",
+ "BDMAP_00004620",
+ "BDMAP_00001636",
+ "BDMAP_00003642",
+ "BDMAP_00000429",
+ "BDMAP_00004682",
+ "BDMAP_00001711",
+ "BDMAP_00002720",
+ "BDMAP_00000616",
+ "BDMAP_00002265",
+ "BDMAP_00002333",
+ "BDMAP_00003603",
+ "BDMAP_00003184",
+ "BDMAP_00005009",
+ "BDMAP_00003039",
+ "BDMAP_00004673",
+ "BDMAP_00003034",
+ "BDMAP_00001633",
+ "BDMAP_00000977",
+ "BDMAP_00001919",
+ "BDMAP_00002084",
+ "BDMAP_00001050",
+ "BDMAP_00004048",
+ "BDMAP_00001721",
+ "BDMAP_00001325",
+ "BDMAP_00001465",
+ "BDMAP_00003073",
+ "BDMAP_00000660",
+ "BDMAP_00003947",
+ "BDMAP_00001089",
+ "BDMAP_00003733",
+ "BDMAP_00004761",
+ "BDMAP_00000331",
+ "BDMAP_00000215",
+ "BDMAP_00005198",
+ "BDMAP_00002340",
+ "BDMAP_00000297",
+ "BDMAP_00002788",
+ "BDMAP_00000414",
+ "BDMAP_00003189",
+ "BDMAP_00002437",
+ "BDMAP_00003516",
+ "BDMAP_00000948",
+ "BDMAP_00003963",
+ "BDMAP_00002940",
+ "BDMAP_00001277",
+ "BDMAP_00001664",
+ "BDMAP_00004014",
+ "BDMAP_00001230",
+ "BDMAP_00004303",
+ "BDMAP_00002951",
+ "BDMAP_00004503",
+ "BDMAP_00004495",
+ "BDMAP_00008388",
+ "BDMAP_00004669",
+ "BDMAP_00001807",
+ "BDMAP_00001273",
+ "BDMAP_00000998",
+ "BDMAP_00003070",
+ "BDMAP_00003823",
+ "BDMAP_00003934",
+ "BDMAP_00000098",
+ "BDMAP_00004347",
+ "BDMAP_00002537",
+ "BDMAP_00001776",
+ "BDMAP_00004487",
+ "BDMAP_00003177",
+ "BDMAP_00005017",
+ "BDMAP_00004597",
+ "BDMAP_00002460",
+ "BDMAP_00001624",
+ "BDMAP_00002928",
+ "BDMAP_00004232",
+ "BDMAP_00004867",
+ "BDMAP_00000122",
+ "BDMAP_00005157",
+ "BDMAP_00003719",
+ "BDMAP_00001941",
+ "BDMAP_00003520",
+ "BDMAP_00002462",
+ "BDMAP_00003713",
+ "BDMAP_00001375",
+ "BDMAP_00005103",
+ "BDMAP_00000377",
+ "BDMAP_00000805",
+ "BDMAP_00003230",
+ "BDMAP_00000241",
+ "BDMAP_00003358",
+ "BDMAP_00002226",
+ "BDMAP_00002396",
+ "BDMAP_00002052",
+ "BDMAP_00000506",
+ "BDMAP_00000742",
+ "BDMAP_00003832",
+ "BDMAP_00000719",
+ "BDMAP_00005114",
+ "BDMAP_00004066",
+ "BDMAP_00003759",
+ "BDMAP_00004316",
+ "BDMAP_00001094",
+ "BDMAP_00000034",
+ "BDMAP_00004407",
+ "BDMAP_00003301",
+ "BDMAP_00000259",
+ "BDMAP_00002087",
+ "BDMAP_00003506",
+ "BDMAP_00002656",
+ "BDMAP_00002981",
+ "BDMAP_00000989",
+ "BDMAP_00002492",
+ "BDMAP_00000309",
+ "BDMAP_00000862",
+ "BDMAP_00005175",
+ "BDMAP_00001796",
+ "BDMAP_00003264",
+ "BDMAP_00000587",
+ "BDMAP_00003448",
+ "BDMAP_00002184",
+ "BDMAP_00001673",
+ "BDMAP_00004209",
+ "BDMAP_00000667",
+ "BDMAP_00001487",
+ "BDMAP_00005165",
+ "BDMAP_00002581",
+ "BDMAP_00004854",
+ "BDMAP_00005030",
+ "BDMAP_00001863",
+ "BDMAP_00003587",
+ "BDMAP_00001396",
+ "BDMAP_00000139",
+ "BDMAP_00003758",
+ "BDMAP_00001676",
+ "BDMAP_00000839",
+ "BDMAP_00002498",
+ "BDMAP_00000574",
+ "BDMAP_00001794",
+ "BDMAP_00003952",
+ "BDMAP_00001513",
+ "BDMAP_00003435",
+ "BDMAP_00004870",
+ "BDMAP_00004686",
+ "BDMAP_00001221",
+ "BDMAP_00003411",
+ "BDMAP_00001757",
+ "BDMAP_00002840",
+ "BDMAP_00000176",
+ "BDMAP_00004557",
+ "BDMAP_00003058",
+ "BDMAP_00003195",
+ "BDMAP_00002421",
+ "BDMAP_00000582",
+ "BDMAP_00004552",
+ "BDMAP_00002067",
+ "BDMAP_00005537",
+ "BDMAP_00003955",
+ "BDMAP_00000569",
+ "BDMAP_00001977",
+ "BDMAP_00001420",
+ "BDMAP_00002948",
+ "BDMAP_00003882",
+ "BDMAP_00000499",
+ "BDMAP_00003240",
+ "BDMAP_00002288",
+ "BDMAP_00005077",
+ "BDMAP_00002833",
+ "BDMAP_00004479",
+ "BDMAP_00002893",
+ "BDMAP_00002993",
+ "BDMAP_00004499",
+ "BDMAP_00000555",
+ "BDMAP_00002751",
+ "BDMAP_00003722",
+ "BDMAP_00001908",
+ "BDMAP_00002638",
+ "BDMAP_00000698",
+ "BDMAP_00003117",
+ "BDMAP_00002326",
+ "BDMAP_00002959",
+ "BDMAP_00000686",
+ "BDMAP_00004454",
+ "BDMAP_00001328",
+ "BDMAP_00002173",
+ "BDMAP_00001035",
+ "BDMAP_00001258",
+ "BDMAP_00002803",
+ "BDMAP_00002292",
+ "BDMAP_00003848",
+ "BDMAP_00004759",
+ "BDMAP_00002122",
+ "BDMAP_00000321",
+ "BDMAP_00001219",
+ "BDMAP_00001995",
+ "BDMAP_00000649",
+ "BDMAP_00005152",
+ "BDMAP_00001045",
+ "BDMAP_00002826",
+ "BDMAP_00001059",
+ "BDMAP_00001254",
+ "BDMAP_00000244",
+ "BDMAP_00004980",
+ "BDMAP_00002906",
+ "BDMAP_00002804",
+ "BDMAP_00001075",
+ "BDMAP_00000968",
+ "BDMAP_00002871",
+ "BDMAP_00001296",
+ "BDMAP_00001931",
+ "BDMAP_00003629",
+ "BDMAP_00004031",
+ "BDMAP_00004901",
+ "BDMAP_00000725",
+ "BDMAP_00003245",
+ "BDMAP_00000788",
+ "BDMAP_00001557",
+ "BDMAP_00001390",
+ "BDMAP_00004652",
+ "BDMAP_00001939",
+ "BDMAP_00000059",
+ "BDMAP_00001242",
+ "BDMAP_00004091",
+ "BDMAP_00004856",
+ "BDMAP_00000329",
+ "BDMAP_00003444",
+ "BDMAP_00003880",
+ "BDMAP_00001707",
+ "BDMAP_00004354",
+ "BDMAP_00001690",
+ "BDMAP_00001684",
+ "BDMAP_00002085",
+ "BDMAP_00003549",
+ "BDMAP_00000518",
+ "BDMAP_00001289",
+ "BDMAP_00004087",
+ "BDMAP_00001768",
+ "BDMAP_00000036",
+ "BDMAP_00004956",
+ "BDMAP_00003491",
+ "BDMAP_00004437",
+ "BDMAP_00004990",
+ "BDMAP_00003957",
+ "BDMAP_00003697",
+ "BDMAP_00003579",
+ "BDMAP_00000434",
+ "BDMAP_00004926",
+ "BDMAP_00002163",
+ "BDMAP_00001126",
+ "BDMAP_00004925",
+ "BDMAP_00000706",
+ "BDMAP_00000368",
+ "BDMAP_00001451",
+ "BDMAP_00002742",
+ "BDMAP_00001612",
+ "BDMAP_00005166",
+ "BDMAP_00002422",
+ "BDMAP_00000452",
+ "BDMAP_00003815",
+ "BDMAP_00004834",
+ "BDMAP_00000053",
+ "BDMAP_00001410",
+ "BDMAP_00000837",
+ "BDMAP_00003704",
+ "BDMAP_00002005",
+ "BDMAP_00001602",
+ "BDMAP_00004633",
+ "BDMAP_00002573",
+ "BDMAP_00000201",
+ "BDMAP_00002942",
+ "BDMAP_00001744",
+ "BDMAP_00002505",
+ "BDMAP_00000376",
+ "BDMAP_00003851",
+ "BDMAP_00001549",
+ "BDMAP_00003973",
+ "BDMAP_00002552",
+ "BDMAP_00002018",
+ "BDMAP_00004260",
+ "BDMAP_00003869",
+ "BDMAP_00004427",
+ "BDMAP_00002273",
+ "BDMAP_00004702",
+ "BDMAP_00003457",
+ "BDMAP_00004181",
+ "BDMAP_00003956",
+ "BDMAP_00001183",
+ "BDMAP_00001703",
+ "BDMAP_00000810",
+ "BDMAP_00002507",
+ "BDMAP_00003930",
+ "BDMAP_00004257",
+ "BDMAP_00001252",
+ "BDMAP_00003984",
+ "BDMAP_00004903",
+ "BDMAP_00002675",
+ "BDMAP_00002431",
+ "BDMAP_00004083",
+ "BDMAP_00005099",
+ "BDMAP_00004581",
+ "BDMAP_00005136",
+ "BDMAP_00003808",
+ "BDMAP_00000066",
+ "BDMAP_00002476",
+ "BDMAP_00005046",
+ "BDMAP_00003721",
+ "BDMAP_00003672",
+ "BDMAP_00000439",
+ "BDMAP_00004216",
+ "BDMAP_00004608",
+ "BDMAP_00004294",
+ "BDMAP_00003736",
+ "BDMAP_00004148",
+ "BDMAP_00001637",
+ "BDMAP_00003666",
+ "BDMAP_00003343",
+ "BDMAP_00004457",
+ "BDMAP_00002884",
+ "BDMAP_00004343",
+ "BDMAP_00004317",
+ "BDMAP_00004717",
+ "BDMAP_00000826",
+ "BDMAP_00004510",
+ "BDMAP_00002776",
+ "BDMAP_00003553",
+ "BDMAP_00000336",
+ "BDMAP_00001268",
+ "BDMAP_00000601",
+ "BDMAP_00003035",
+ "BDMAP_00000924",
+ "BDMAP_00002114",
+ "BDMAP_00003774",
+ "BDMAP_00001104",
+ "BDMAP_00001516",
+ "BDMAP_00002920",
+ "BDMAP_00002410",
+ "BDMAP_00008389",
+ "BDMAP_00000319",
+ "BDMAP_00003392",
+ "BDMAP_00003253",
+ "BDMAP_00002353",
+ "BDMAP_00005167",
+ "BDMAP_00002617",
+ "BDMAP_00002045",
+ "BDMAP_00002524",
+ "BDMAP_00002870",
+ "BDMAP_00003220",
+ "BDMAP_00001079",
+ "BDMAP_00008617",
+ "BDMAP_00002035",
+ "BDMAP_00002579",
+ "BDMAP_00003028",
+ "BDMAP_00000815",
+ "BDMAP_00002806",
+ "BDMAP_00002808",
+ "BDMAP_00002509",
+ "BDMAP_00000985",
+ "BDMAP_00002696",
+ "BDMAP_00003463",
+ "BDMAP_00000233",
+ "BDMAP_00000982",
+ "BDMAP_00004836",
+ "BDMAP_00001408",
+ "BDMAP_00001225",
+ "BDMAP_00000229",
+ "BDMAP_00001001",
+ "BDMAP_00003409",
+ "BDMAP_00002653",
+ "BDMAP_00000102",
+ "BDMAP_00001853",
+ "BDMAP_00002211",
+ "BDMAP_00001340",
+ "BDMAP_00005148",
+ "BDMAP_00002562",
+ "BDMAP_00004771",
+ "BDMAP_00003132",
+ "BDMAP_00000604",
+ "BDMAP_00003294",
+ "BDMAP_00003315",
+ "BDMAP_00002164",
+ "BDMAP_00001064",
+ "BDMAP_00004605",
+ "BDMAP_00004268",
+ "BDMAP_00001851",
+ "BDMAP_00001161",
+ "BDMAP_00004630",
+ "BDMAP_00000936",
+ "BDMAP_00002487",
+ "BDMAP_00004561",
+ "BDMAP_00004328",
+ "BDMAP_00005113",
+ "BDMAP_00003051",
+ "BDMAP_00000987",
+ "BDMAP_00005162",
+ "BDMAP_00005085",
+ "BDMAP_00003359",
+ "BDMAP_00005151",
+ "BDMAP_00002655",
+ "BDMAP_00003535",
+ "BDMAP_00001947",
+ "BDMAP_00002086",
+ "BDMAP_00004775",
+ "BDMAP_00002022",
+ "BDMAP_00003509",
+ "BDMAP_00000656",
+ "BDMAP_00001878",
+ "BDMAP_00001261",
+ "BDMAP_00004208",
+ "BDMAP_00003530",
+ "BDMAP_00001228",
+ "BDMAP_00000044",
+ "BDMAP_00005399",
+ "BDMAP_00000293",
+ "BDMAP_00003806",
+ "BDMAP_00000489",
+ "BDMAP_00000481",
+ "BDMAP_00002936",
+ "BDMAP_00000724",
+ "BDMAP_00000265",
+ "BDMAP_00002990",
+ "BDMAP_00003994",
+ "BDMAP_00000773",
+ "BDMAP_00002033",
+ "BDMAP_00004397",
+ "BDMAP_00001133",
+ "BDMAP_00004224",
+ "BDMAP_00004211",
+ "BDMAP_00001119",
+ "BDMAP_00004897",
+ "BDMAP_00000090",
+ "BDMAP_00002075",
+ "BDMAP_00000583",
+ "BDMAP_00001740",
+ "BDMAP_00000951",
+ "BDMAP_00000023",
+ "BDMAP_00000756",
+ "BDMAP_00002746",
+ "BDMAP_00000128",
+ "BDMAP_00002558",
+ "BDMAP_00001831",
+ "BDMAP_00004979",
+ "BDMAP_00003727",
+ "BDMAP_00001581",
+ "BDMAP_00001571",
+ "BDMAP_00004981",
+ "BDMAP_00004296",
+ "BDMAP_00000249",
+ "BDMAP_00000935",
+ "BDMAP_00000871",
+ "BDMAP_00001911",
+ "BDMAP_00002787",
+ "BDMAP_00002723",
+ "BDMAP_00000943",
+ "BDMAP_00001826",
+ "BDMAP_00002501",
+ "BDMAP_00001784",
+ "BDMAP_00003197",
+ "BDMAP_00002504",
+ "BDMAP_00001286",
+ "BDMAP_00003735",
+ "BDMAP_00002200",
+ "BDMAP_00003384",
+ "BDMAP_00001520",
+ "BDMAP_00000043",
+ "BDMAP_00004315",
+ "BDMAP_00000836",
+ "BDMAP_00003129",
+ "BDMAP_00000162",
+ "BDMAP_00003996",
+ "BDMAP_00001500",
+ "BDMAP_00000917",
+ "BDMAP_00003493",
+ "BDMAP_00002319",
+ "BDMAP_00001411",
+ "BDMAP_00004108",
+ "BDMAP_00002426",
+ "BDMAP_00004850",
+ "BDMAP_00005191",
+ "BDMAP_00001483",
+ "BDMAP_00002665",
+ "BDMAP_00001275",
+ "BDMAP_00001239",
+ "BDMAP_00004627",
+ "BDMAP_00004579",
+ "BDMAP_00004928",
+ "BDMAP_00003959",
+ "BDMAP_00001444",
+ "BDMAP_00003514",
+ "BDMAP_00001370",
+ "BDMAP_00001457",
+ "BDMAP_00000210",
+ "BDMAP_00003923",
+ "BDMAP_00001772",
+ "BDMAP_00002571",
+ "BDMAP_00002991",
+ "BDMAP_00000844",
+ "BDMAP_00001533",
+ "BDMAP_00002361",
+ "BDMAP_00003777",
+ "BDMAP_00001918",
+ "BDMAP_00001138",
+ "BDMAP_00001130",
+ "BDMAP_00001285",
+ "BDMAP_00003128",
+ "BDMAP_00002518",
+ "BDMAP_00002057",
+ "BDMAP_00004808",
+ "BDMAP_00002263",
+ "BDMAP_00003608",
+ "BDMAP_00003581",
+ "BDMAP_00000475",
+ "BDMAP_00004886",
+ "BDMAP_00000562",
+ "BDMAP_00004528",
+ "BDMAP_00004012",
+ "BDMAP_00004175",
+ "BDMAP_00003422",
+ "BDMAP_00001530",
+ "BDMAP_00001635",
+ "BDMAP_00005150",
+ "BDMAP_00003484",
+ "BDMAP_00003461",
+ "BDMAP_00004923",
+ "BDMAP_00003335",
+ "BDMAP_00001109",
+ "BDMAP_00001256",
+ "BDMAP_00004817",
+ "BDMAP_00000033",
+ "BDMAP_00003717",
+ "BDMAP_00003841",
+ "BDMAP_00002902",
+ "BDMAP_00001193",
+ "BDMAP_00000449",
+ "BDMAP_00001238",
+ "BDMAP_00001522",
+ "BDMAP_00002146",
+ "BDMAP_00004586",
+ "BDMAP_00003087",
+ "BDMAP_00002043",
+ "BDMAP_00000149",
+ "BDMAP_00001752",
+ "BDMAP_00000902",
+ "BDMAP_00003849",
+ "BDMAP_00003928",
+ "BDMAP_00004922",
+ "BDMAP_00000557",
+ "BDMAP_00002854",
+ "BDMAP_00003381",
+ "BDMAP_00000571",
+ "BDMAP_00001562",
+ "BDMAP_00004460",
+ "BDMAP_00004475",
+ "BDMAP_00002472",
+ "BDMAP_00001669",
+ "BDMAP_00002929",
+ "BDMAP_00001553",
+ "BDMAP_00003324",
+ "BDMAP_00003256",
+ "BDMAP_00003455",
+ "BDMAP_00003767",
+ "BDMAP_00001839",
+ "BDMAP_00001705",
+ "BDMAP_00000540",
+ "BDMAP_00001540",
+ "BDMAP_00002661",
+ "BDMAP_00002677",
+ "BDMAP_00001987",
+ "BDMAP_00000245",
+ "BDMAP_00003425",
+ "BDMAP_00003740",
+ "BDMAP_00004414",
+ "BDMAP_00002626",
+ "BDMAP_00004738",
+ "BDMAP_00001869",
+ "BDMAP_00004815",
+ "BDMAP_00000327",
+ "BDMAP_00004212",
+ "BDMAP_00003656",
+ "BDMAP_00001456",
+ "BDMAP_00001511",
+ "BDMAP_00004030",
+ "BDMAP_00000834",
+ "BDMAP_00001335",
+ "BDMAP_00004065",
+ "BDMAP_00000160",
+ "BDMAP_00001568",
+ "BDMAP_00001892",
+ "BDMAP_00002347",
+ "BDMAP_00003121",
+ "BDMAP_00003019",
+ "BDMAP_00003895",
+ "BDMAP_00004093",
+ "BDMAP_00002060",
+ "BDMAP_00003576",
+ "BDMAP_00003248",
+ "BDMAP_00001246",
+ "BDMAP_00001877",
+ "BDMAP_00004146",
+ "BDMAP_00004278",
+ "BDMAP_00003219",
+ "BDMAP_00004104",
+ "BDMAP_00004349",
+ "BDMAP_00001117",
+ "BDMAP_00002383",
+ "BDMAP_00005120",
+ "BDMAP_00001023",
+ "BDMAP_00003429",
+ "BDMAP_00003752",
+ "BDMAP_00001782",
+ "BDMAP_00002873",
+ "BDMAP_00000469",
+ "BDMAP_00001777",
+ "BDMAP_00000263",
+ "BDMAP_00003694",
+ "BDMAP_00002545",
+ "BDMAP_00002931",
+ "BDMAP_00002713",
+ "BDMAP_00004737",
+ "BDMAP_00001791",
+ "BDMAP_00001749",
+ "BDMAP_00004489",
+ "BDMAP_00000602",
+ "BDMAP_00001868",
+ "BDMAP_00004780",
+ "BDMAP_00002448",
+ "BDMAP_00001281",
+ "BDMAP_00002762",
+ "BDMAP_00004727",
+ "BDMAP_00003255",
+ "BDMAP_00004373",
+ "BDMAP_00003203",
+ "BDMAP_00000923",
+ "BDMAP_00001731",
+ "BDMAP_00003158",
+ "BDMAP_00002394",
+ "BDMAP_00002166",
+ "BDMAP_00002358",
+ "BDMAP_00000567",
+ "BDMAP_00002481",
+ "BDMAP_00002673",
+ "BDMAP_00001251",
+ "BDMAP_00001107",
+ "BDMAP_00002496",
+ "BDMAP_00004645",
+ "BDMAP_00002966",
+ "BDMAP_00002310",
+ "BDMAP_00001896",
+ "BDMAP_00001359",
+ "BDMAP_00002403",
+ "BDMAP_00003059",
+ "BDMAP_00004746",
+ "BDMAP_00002716",
+ "BDMAP_00003152",
+ "BDMAP_00001380",
+ "BDMAP_00000927",
+ "BDMAP_00001891",
+ "BDMAP_00001351",
+ "BDMAP_00004389",
+ "BDMAP_00003833",
+ "BDMAP_00003024",
+ "BDMAP_00001265",
+ "BDMAP_00000505",
+ "BDMAP_00002881",
+ "BDMAP_00000167",
+ "BDMAP_00003406",
+ "BDMAP_00003206",
+ "BDMAP_00002992",
+ "BDMAP_00002546",
+ "BDMAP_00002471",
+ "BDMAP_00003580",
+ "BDMAP_00002708",
+ "BDMAP_00002943",
+ "BDMAP_00001324",
+ "BDMAP_00001422",
+ "BDMAP_00001679",
+ "BDMAP_00000310",
+ "BDMAP_00006181",
+ "BDMAP_00001012",
+ "BDMAP_00001913",
+ "BDMAP_00003190",
+ "BDMAP_00003202",
+ "BDMAP_00004772",
+ "BDMAP_00001840",
+ "BDMAP_00001867",
+ "BDMAP_00003225",
+ "BDMAP_00002728",
+ "BDMAP_00002091",
+ "BDMAP_00000653",
+ "BDMAP_00003194",
+ "BDMAP_00004154",
+ "BDMAP_00001222",
+ "BDMAP_00003465",
+ "BDMAP_00004609",
+ "BDMAP_00002381",
+ "BDMAP_00004027",
+ "BDMAP_00002798",
+ "BDMAP_00001474",
+ "BDMAP_00003971",
+ "BDMAP_00002066",
+ "BDMAP_00002689",
+ "BDMAP_00001945",
+ "BDMAP_00003746",
+ "BDMAP_00002663",
+ "BDMAP_00002592",
+ "BDMAP_00001536",
+ "BDMAP_00002099",
+ "BDMAP_00002354",
+ "BDMAP_00002243",
+ "BDMAP_00000304",
+ "BDMAP_00001950",
+ "BDMAP_00004417",
+ "BDMAP_00004575",
+ "BDMAP_00001688",
+ "BDMAP_00004844",
+ "BDMAP_00004158",
+ "BDMAP_00000803",
+ "BDMAP_00002889",
+ "BDMAP_00003529",
+ "BDMAP_00000035",
+ "BDMAP_00001453",
+ "BDMAP_00004487",
+ "BDMAP_00002243",
+ "BDMAP_00004878",
+ "BDMAP_00003626",
+ "BDMAP_00002381",
+ "BDMAP_00001260",
+ "BDMAP_00000802",
+ "BDMAP_00008568",
+ "BDMAP_00003816",
+ "BDMAP_00000564",
+ "BDMAP_00001236",
+ "BDMAP_00007629",
+ "BDMAP_00002805",
+ "BDMAP_00000413",
+ "BDMAP_00001239",
+ "BDMAP_00004890",
+ "BDMAP_00000695",
+ "BDMAP_00003889",
+ "BDMAP_00004630",
+ "BDMAP_00001122",
+ "BDMAP_00004702",
+ "BDMAP_00003028",
+ "BDMAP_00002111",
+ "BDMAP_00004984",
+ "BDMAP_00002267",
+ "BDMAP_00004049",
+ "BDMAP_00005753",
+ "BDMAP_00004289",
+ "BDMAP_00004737",
+ "BDMAP_00001697",
+ "BDMAP_00000778",
+ "BDMAP_00001944",
+ "BDMAP_00002359",
+ "BDMAP_00000524",
+ "BDMAP_00004459",
+ "BDMAP_00003307",
+ "BDMAP_00008085",
+ "BDMAP_00003984",
+ "BDMAP_00004013",
+ "BDMAP_00001997",
+ "BDMAP_00003038",
+ "BDMAP_00002342",
+ "BDMAP_00001450",
+ "BDMAP_00003579",
+ "BDMAP_00000601",
+ "BDMAP_00001870",
+ "BDMAP_00000347",
+ "BDMAP_00002462",
+ "BDMAP_00002147",
+ "BDMAP_00001333",
+ "BDMAP_00001731",
+ "BDMAP_00000210",
+ "BDMAP_00002340",
+ "BDMAP_00002198",
+ "BDMAP_00002043",
+ "BDMAP_00000741",
+ "BDMAP_00001093",
+ "BDMAP_00009277",
+ "BDMAP_00004508",
+ "BDMAP_00003898",
+ "BDMAP_00000365",
+ "BDMAP_00001800",
+ "BDMAP_00000607",
+ "BDMAP_00000113",
+ "BDMAP_00004998",
+ "BDMAP_00003979",
+ "BDMAP_00001025",
+ "BDMAP_00002080",
+ "BDMAP_00003697",
+ "BDMAP_00004809",
+ "BDMAP_00003004",
+ "BDMAP_00003337",
+ "BDMAP_00002373",
+ "BDMAP_00003524",
+ "BDMAP_00009876",
+ "BDMAP_00004108",
+ "BDMAP_00008555",
+ "BDMAP_00000506",
+ "BDMAP_00004408",
+ "BDMAP_00002252",
+ "BDMAP_00002546",
+ "BDMAP_00004763",
+ "BDMAP_00000270",
+ "BDMAP_00003258",
+ "BDMAP_00004588",
+ "BDMAP_00000205",
+ "BDMAP_00001740",
+ "BDMAP_00004259",
+ "BDMAP_00002929",
+ "BDMAP_00001221",
+ "BDMAP_00003920",
+ "BDMAP_00000917",
+ "BDMAP_00003390",
+ "BDMAP_00000423",
+ "BDMAP_00004349",
+ "BDMAP_00002937",
+ "BDMAP_00008305",
+ "BDMAP_00004527",
+ "BDMAP_00003177",
+ "BDMAP_00007259",
+ "BDMAP_00004598",
+ "BDMAP_00003508",
+ "BDMAP_00000489",
+ "BDMAP_00003682",
+ "BDMAP_00003867",
+ "BDMAP_00000742",
+ "BDMAP_00003897",
+ "BDMAP_00001285",
+ "BDMAP_00005119",
+ "BDMAP_00004669",
+ "BDMAP_00001749",
+ "BDMAP_00002066",
+ "BDMAP_00001064",
+ "BDMAP_00007159",
+ "BDMAP_00004503",
+ "BDMAP_00004825",
+ "BDMAP_00000400",
+ "BDMAP_00003257",
+ "BDMAP_00007822",
+ "BDMAP_00001950",
+ "BDMAP_00001241",
+ "BDMAP_00001379",
+ "BDMAP_00005186",
+ "BDMAP_00004028",
+ "BDMAP_00001266",
+ "BDMAP_00000648",
+ "BDMAP_00001802",
+ "BDMAP_00001524",
+ "BDMAP_00002479",
+ "BDMAP_00002856",
+ "BDMAP_00001443",
+ "BDMAP_00002045",
+ "BDMAP_00001998",
+ "BDMAP_00002713",
+ "BDMAP_00005500",
+ "BDMAP_00004416",
+ "BDMAP_00003664",
+ "BDMAP_00006713",
+ "BDMAP_00002053",
+ "BDMAP_00004091",
+ "BDMAP_00003932",
+ "BDMAP_00001907",
+ "BDMAP_00002322",
+ "BDMAP_00000475",
+ "BDMAP_00002485",
+ "BDMAP_00002358",
+ "BDMAP_00004016",
+ "BDMAP_00002292",
+ "BDMAP_00002901",
+ "BDMAP_00001026",
+ "BDMAP_00004943",
+ "BDMAP_00001451",
+ "BDMAP_00000546",
+ "BDMAP_00007236",
+ "BDMAP_00000603",
+ "BDMAP_00000201",
+ "BDMAP_00003839",
+ "BDMAP_00003151",
+ "BDMAP_00000827",
+ "BDMAP_00002918",
+ "BDMAP_00006507",
+ "BDMAP_00001877",
+ "BDMAP_00008306",
+ "BDMAP_00004370",
+ "BDMAP_00000941",
+ "BDMAP_00003072",
+ "BDMAP_00002012",
+ "BDMAP_00004325",
+ "BDMAP_00004995",
+ "BDMAP_00001309",
+ "BDMAP_00003934",
+ "BDMAP_00004772",
+ "BDMAP_00001637",
+ "BDMAP_00000001",
+ "BDMAP_00003857",
+ "BDMAP_00003184",
+ "BDMAP_00002699",
+ "BDMAP_00005097",
+ "BDMAP_00001362",
+ "BDMAP_00005021",
+ "BDMAP_00003074",
+ "BDMAP_00005547",
+ "BDMAP_00001033",
+ "BDMAP_00000273",
+ "BDMAP_00003330",
+ "BDMAP_00003497",
+ "BDMAP_00002806",
+ "BDMAP_00005103",
+ "BDMAP_00001692",
+ "BDMAP_00001471",
+ "BDMAP_00001677",
+ "BDMAP_00003361",
+ "BDMAP_00000091",
+ "BDMAP_00009022",
+ "BDMAP_00001581",
+ "BDMAP_00004928",
+ "BDMAP_00001154",
+ "BDMAP_00001391",
+ "BDMAP_00000642",
+ "BDMAP_00004102",
+ "BDMAP_00003619",
+ "BDMAP_00001316",
+ "BDMAP_00000643",
+ "BDMAP_00001559",
+ "BDMAP_00000963",
+ "BDMAP_00003798",
+ "BDMAP_00002052",
+ "BDMAP_00004435",
+ "BDMAP_00000408",
+ "BDMAP_00001188",
+ "BDMAP_00002791",
+ "BDMAP_00003499",
+ "BDMAP_00003248",
+ "BDMAP_00002698",
+ "BDMAP_00004185",
+ "BDMAP_00002849",
+ "BDMAP_00003394",
+ "BDMAP_00000985",
+ "BDMAP_00003199",
+ "BDMAP_00005546",
+ "BDMAP_00002529",
+ "BDMAP_00004017",
+ "BDMAP_00000951",
+ "BDMAP_00004052",
+ "BDMAP_00003415",
+ "BDMAP_00002851",
+ "BDMAP_00003112",
+ "BDMAP_00001228",
+ "BDMAP_00001171",
+ "BDMAP_00000907",
+ "BDMAP_00001619",
+ "BDMAP_00002909",
+ "BDMAP_00004228",
+ "BDMAP_00003848",
+ "BDMAP_00002283",
+ "BDMAP_00003008",
+ "BDMAP_00002712",
+ "BDMAP_00002993",
+ "BDMAP_00000583",
+ "BDMAP_00006148",
+ "BDMAP_00002448",
+ "BDMAP_00003377",
+ "BDMAP_00000305",
+ "BDMAP_00004866",
+ "BDMAP_00003482",
+ "BDMAP_00002349",
+ "BDMAP_00004496",
+ "BDMAP_00003116",
+ "BDMAP_00001966",
+ "BDMAP_00001810",
+ "BDMAP_00002970",
+ "BDMAP_00005136",
+ "BDMAP_00003733",
+ "BDMAP_00003117",
+ "BDMAP_00003463",
+ "BDMAP_00002000",
+ "BDMAP_00002282",
+ "BDMAP_00007630",
+ "BDMAP_00002382",
+ "BDMAP_00003054",
+ "BDMAP_00002507",
+ "BDMAP_00000140",
+ "BDMAP_00000247",
+ "BDMAP_00002289",
+ "BDMAP_00004405",
+ "BDMAP_00004372",
+ "BDMAP_00004780",
+ "BDMAP_00007665",
+ "BDMAP_00005752",
+ "BDMAP_00001957",
+ "BDMAP_00005065",
+ "BDMAP_00002837",
+ "BDMAP_00005175",
+ "BDMAP_00002159",
+ "BDMAP_00003841",
+ "BDMAP_00001753",
+ "BDMAP_00001834",
+ "BDMAP_00002117",
+ "BDMAP_00003893",
+ "BDMAP_00003557",
+ "BDMAP_00002579",
+ "BDMAP_00000480",
+ "BDMAP_00004359",
+ "BDMAP_00004888",
+ "BDMAP_00001115",
+ "BDMAP_00000915",
+ "BDMAP_00001766",
+ "BDMAP_00001783",
+ "BDMAP_00004557",
+ "BDMAP_00000924",
+ "BDMAP_00003910",
+ "BDMAP_00005106",
+ "BDMAP_00000709",
+ "BDMAP_00004736",
+ "BDMAP_00001699",
+ "BDMAP_00002321",
+ "BDMAP_00004311",
+ "BDMAP_00001869",
+ "BDMAP_00004639",
+ "BDMAP_00001340",
+ "BDMAP_00001796",
+ "BDMAP_00004528",
+ "BDMAP_00003747",
+ "BDMAP_00000671",
+ "BDMAP_00002158",
+ "BDMAP_00001254",
+ "BDMAP_00000732",
+ "BDMAP_00002200",
+ "BDMAP_00004279",
+ "BDMAP_00000377",
+ "BDMAP_00000437",
+ "BDMAP_00003513",
+ "BDMAP_00001640",
+ "BDMAP_00002389",
+ "BDMAP_00003176",
+ "BDMAP_00002748",
+ "BDMAP_00003911",
+ "BDMAP_00001721",
+ "BDMAP_00003203",
+ "BDMAP_00002719",
+ "BDMAP_00002146",
+ "BDMAP_00007579",
+ "BDMAP_00000310",
+ "BDMAP_00003569",
+ "BDMAP_00004151",
+ "BDMAP_00003746",
+ "BDMAP_00004869",
+ "BDMAP_00000037",
+ "BDMAP_00009779",
+ "BDMAP_00004727",
+ "BDMAP_00004010",
+ "BDMAP_00006036",
+ "BDMAP_00002716",
+ "BDMAP_00008084",
+ "BDMAP_00001010",
+ "BDMAP_00003556",
+ "BDMAP_00007838",
+ "BDMAP_00000849",
+ "BDMAP_00001539",
+ "BDMAP_00003052",
+ "BDMAP_00004103",
+ "BDMAP_00006569",
+ "BDMAP_00002033",
+ "BDMAP_00003723",
+ "BDMAP_00002055",
+ "BDMAP_00002718",
+ "BDMAP_00002084",
+ "BDMAP_00001094",
+ "BDMAP_00002419",
+ "BDMAP_00000533",
+ "BDMAP_00000918",
+ "BDMAP_00003236",
+ "BDMAP_00004209",
+ "BDMAP_00004979",
+ "BDMAP_00008828",
+ "BDMAP_00003190",
+ "BDMAP_00002167",
+ "BDMAP_00003135",
+ "BDMAP_00001397",
+ "BDMAP_00002285",
+ "BDMAP_00000457",
+ "BDMAP_00001805",
+ "BDMAP_00002040",
+ "BDMAP_00005130",
+ "BDMAP_00004761",
+ "BDMAP_00003763",
+ "BDMAP_00000921",
+ "BDMAP_00004600",
+ "BDMAP_00003140",
+ "BDMAP_00003949",
+ "BDMAP_00001343",
+ "BDMAP_00007524",
+ "BDMAP_00003295",
+ "BDMAP_00003335",
+ "BDMAP_00004012",
+ "BDMAP_00004536",
+ "BDMAP_00000084",
+ "BDMAP_00005138",
+ "BDMAP_00001185",
+ "BDMAP_00000362",
+ "BDMAP_00004854",
+ "BDMAP_00004664",
+ "BDMAP_00004187",
+ "BDMAP_00001486",
+ "BDMAP_00002951",
+ "BDMAP_00001375",
+ "BDMAP_00007429",
+ "BDMAP_00003158",
+ "BDMAP_00007561",
+ "BDMAP_00001402",
+ "BDMAP_00000611",
+ "BDMAP_00001170",
+ "BDMAP_00005717",
+ "BDMAP_00001200",
+ "BDMAP_00004117",
+ "BDMAP_00003791",
+ "BDMAP_00002275",
+ "BDMAP_00000474",
+ "BDMAP_00002466",
+ "BDMAP_00000283",
+ "BDMAP_00003297",
+ "BDMAP_00002271",
+ "BDMAP_00000927",
+ "BDMAP_00005083",
+ "BDMAP_00003261",
+ "BDMAP_00004839",
+ "BDMAP_00004855",
+ "BDMAP_00004211",
+ "BDMAP_00001502",
+ "BDMAP_00003629",
+ "BDMAP_00004304",
+ "BDMAP_00000258",
+ "BDMAP_00004529",
+ "BDMAP_00003287",
+ "BDMAP_00004991",
+ "BDMAP_00000572",
+ "BDMAP_00003642",
+ "BDMAP_00002394",
+ "BDMAP_00002127",
+ "BDMAP_00004830",
+ "BDMAP_00002495",
+ "BDMAP_00000729",
+ "BDMAP_00003574",
+ "BDMAP_00002841",
+ "BDMAP_00001219",
+ "BDMAP_00008829",
+ "BDMAP_00001631",
+ "BDMAP_00003206",
+ "BDMAP_00000232",
+ "BDMAP_00004271",
+ "BDMAP_00001351",
+ "BDMAP_00001678",
+ "BDMAP_00004093",
+ "BDMAP_00004462",
+ "BDMAP_00000454",
+ "BDMAP_00004509",
+ "BDMAP_00000981",
+ "BDMAP_00004199",
+ "BDMAP_00001012",
+ "BDMAP_00001055",
+ "BDMAP_00002831",
+ "BDMAP_00001596",
+ "BDMAP_00004745",
+ "BDMAP_00001457",
+ "BDMAP_00003228",
+ "BDMAP_00003002",
+ "BDMAP_00001378",
+ "BDMAP_00008344",
+ "BDMAP_00000342",
+ "BDMAP_00000965",
+ "BDMAP_00001114",
+ "BDMAP_00003719",
+ "BDMAP_00002583",
+ "BDMAP_00001192",
+ "BDMAP_00003704",
+ "BDMAP_00005168",
+ "BDMAP_00000815",
+ "BDMAP_00000013",
+ "BDMAP_00001270",
+ "BDMAP_00001839",
+ "BDMAP_00000971",
+ "BDMAP_00005035",
+ "BDMAP_00000943",
+ "BDMAP_00002172",
+ "BDMAP_00004625"
+ ],
+ "val": [
+ "BDMAP_00000332",
+ "BDMAP_00004858",
+ "BDMAP_00005155",
+ "BDMAP_00001205",
+ "BDMAP_00004770",
+ "BDMAP_00001361",
+ "BDMAP_00002944",
+ "BDMAP_00003961",
+ "BDMAP_00000430",
+ "BDMAP_00000679",
+ "BDMAP_00003809",
+ "BDMAP_00004115",
+ "BDMAP_00003367",
+ "BDMAP_00002899",
+ "BDMAP_00003771",
+ "BDMAP_00003502",
+ "BDMAP_00001628",
+ "BDMAP_00003884",
+ "BDMAP_00005074",
+ "BDMAP_00003114",
+ "BDMAP_00004741",
+ "BDMAP_00001746",
+ "BDMAP_00002603",
+ "BDMAP_00004128",
+ "BDMAP_00000487",
+ "BDMAP_00002631",
+ "BDMAP_00002744",
+ "BDMAP_00000833",
+ "BDMAP_00002648",
+ "BDMAP_00000375",
+ "BDMAP_00000608",
+ "BDMAP_00001352",
+ "BDMAP_00002775",
+ "BDMAP_00002474",
+ "BDMAP_00000458",
+ "BDMAP_00000511",
+ "BDMAP_00003150",
+ "BDMAP_00000794",
+ "BDMAP_00001255",
+ "BDMAP_00002242",
+ "BDMAP_00003205",
+ "BDMAP_00002181",
+ "BDMAP_00003486",
+ "BDMAP_00004250",
+ "BDMAP_00002453",
+ "BDMAP_00003164",
+ "BDMAP_00004578",
+ "BDMAP_00001735",
+ "BDMAP_00004281",
+ "BDMAP_00003481",
+ "BDMAP_00001786",
+ "BDMAP_00000101",
+ "BDMAP_00001813",
+ "BDMAP_00000615",
+ "BDMAP_00003170",
+ "BDMAP_00004378",
+ "BDMAP_00004704",
+ "BDMAP_00003439",
+ "BDMAP_00002717",
+ "BDMAP_00001981",
+ "BDMAP_00000100",
+ "BDMAP_00001018",
+ "BDMAP_00002214",
+ "BDMAP_00001198",
+ "BDMAP_00001962",
+ "BDMAP_00002463",
+ "BDMAP_00005139",
+ "BDMAP_00000831",
+ "BDMAP_00002955",
+ "BDMAP_00003272",
+ "BDMAP_00000745"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus.json
new file mode 100644
index 0000000000000000000000000000000000000000..15fdfd5f85dd4464b93319a647b02e8368860eeb
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus.json
@@ -0,0 +1,87 @@
+[
+ {
+ "train": [
+ "BDMAP_endometrioma_00000023",
+ "BDMAP_endometrioma_00000003",
+ "BDMAP_endometrioma_00000035",
+ "BDMAP_endometrioma_00000054",
+ "BDMAP_endometrioma_00000001",
+ "BDMAP_endometrioma_00000012",
+ "BDMAP_endometrioma_00000011",
+ "BDMAP_endometrioma_00000013",
+ "BDMAP_endometrioma_00000070",
+ "BDMAP_endometrioma_00000055",
+ "BDMAP_endometrioma_00000016",
+ "BDMAP_endometrioma_00000033",
+ "BDMAP_endometrioma_00000034",
+ "BDMAP_endometrioma_00000040",
+ "BDMAP_endometrioma_00000005",
+ "BDMAP_endometrioma_00000079",
+ "BDMAP_endometrioma_00000028",
+ "BDMAP_endometrioma_00000076",
+ "BDMAP_endometrioma_00000050",
+ "BDMAP_endometrioma_00000043",
+ "BDMAP_endometrioma_00000066",
+ "BDMAP_endometrioma_00000006",
+ "BDMAP_endometrioma_00000027",
+ "BDMAP_endometrioma_00000004",
+ "BDMAP_endometrioma_00000078",
+ "BDMAP_endometrioma_00000007",
+ "BDMAP_endometrioma_00000025",
+ "BDMAP_endometrioma_00000002",
+ "BDMAP_endometrioma_00000032",
+ "BDMAP_endometrioma_00000037",
+ "BDMAP_endometrioma_00000010",
+ "BDMAP_endometrioma_00000063",
+ "BDMAP_endometrioma_00000018",
+ "BDMAP_endometrioma_00000026",
+ "BDMAP_endometrioma_00000064",
+ "BDMAP_endometrioma_00000058",
+ "BDMAP_endometrioma_00000045",
+ "BDMAP_endometrioma_00000044",
+ "BDMAP_endometrioma_00000047",
+ "BDMAP_endometrioma_00000042",
+ "BDMAP_endometrioma_00000067",
+ "BDMAP_endometrioma_00000052",
+ "BDMAP_endometrioma_00000031",
+ "BDMAP_endometrioma_00000020",
+ "BDMAP_endometrioma_00000015",
+ "BDMAP_endometrioma_00000061",
+ "BDMAP_endometrioma_00000024",
+ "BDMAP_endometrioma_00000022",
+ "BDMAP_endometrioma_00000009",
+ "BDMAP_endometrioma_00000056",
+ "BDMAP_endometrioma_00000008",
+ "BDMAP_endometrioma_00000029",
+ "BDMAP_endometrioma_00000017",
+ "BDMAP_endometrioma_00000062",
+ "BDMAP_endometrioma_00000051",
+ "BDMAP_endometrioma_00000021"
+ ],
+ "val": [
+ "BDMAP_endometrioma_00000060",
+ "BDMAP_endometrioma_00000038",
+ "BDMAP_endometrioma_00000077",
+ "BDMAP_endometrioma_00000068",
+ "BDMAP_endometrioma_00000075",
+ "BDMAP_endometrioma_00000073",
+ "BDMAP_endometrioma_00000039",
+ "BDMAP_endometrioma_00000057",
+ "BDMAP_endometrioma_00000065",
+ "BDMAP_endometrioma_00000048",
+ "BDMAP_endometrioma_00000036",
+ "BDMAP_endometrioma_00000049",
+ "BDMAP_endometrioma_00000014",
+ "BDMAP_endometrioma_00000059",
+ "BDMAP_endometrioma_00000072",
+ "BDMAP_endometrioma_00000046",
+ "BDMAP_endometrioma_00000019",
+ "BDMAP_endometrioma_00000069",
+ "BDMAP_endometrioma_00000071",
+ "BDMAP_endometrioma_00000041",
+ "BDMAP_endometrioma_00000053",
+ "BDMAP_endometrioma_00000030",
+ "BDMAP_endometrioma_00000074"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus_bdmap.json b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus_bdmap.json
new file mode 100644
index 0000000000000000000000000000000000000000..3be5e950d651a5b43033b8174c7b722e766a0c11
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/splits_final_uterus_bdmap.json
@@ -0,0 +1,87 @@
+[
+ {
+ "train": [
+ "BDMAP_00022490",
+ "BDMAP_00022418",
+ "BDMAP_00022453",
+ "BDMAP_00022438",
+ "BDMAP_00022413",
+ "BDMAP_00022469",
+ "BDMAP_00022436",
+ "BDMAP_00022443",
+ "BDMAP_00022427",
+ "BDMAP_00022416",
+ "BDMAP_00022421",
+ "BDMAP_00022434",
+ "BDMAP_00022473",
+ "BDMAP_00022440",
+ "BDMAP_00022439",
+ "BDMAP_00022433",
+ "BDMAP_00022446",
+ "BDMAP_00022475",
+ "BDMAP_00022414",
+ "BDMAP_00022431",
+ "BDMAP_00022432",
+ "BDMAP_00022428",
+ "BDMAP_00022481",
+ "BDMAP_00022489",
+ "BDMAP_00022462",
+ "BDMAP_00022437",
+ "BDMAP_00022467",
+ "BDMAP_00022420",
+ "BDMAP_00022474",
+ "BDMAP_00022426",
+ "BDMAP_00022466",
+ "BDMAP_00022463",
+ "BDMAP_00022451",
+ "BDMAP_00022461",
+ "BDMAP_00022472",
+ "BDMAP_00022423",
+ "BDMAP_00022456",
+ "BDMAP_00022455",
+ "BDMAP_00022429",
+ "BDMAP_00022487",
+ "BDMAP_00022419",
+ "BDMAP_00022422",
+ "BDMAP_00022448",
+ "BDMAP_00022415",
+ "BDMAP_00022454",
+ "BDMAP_00022477",
+ "BDMAP_00022444",
+ "BDMAP_00022435",
+ "BDMAP_00022417",
+ "BDMAP_00022478",
+ "BDMAP_00022445",
+ "BDMAP_00022442",
+ "BDMAP_00022465",
+ "BDMAP_00022412",
+ "BDMAP_00022424",
+ "BDMAP_00022458"
+ ],
+ "val": [
+ "BDMAP_00022471",
+ "BDMAP_00022449",
+ "BDMAP_00022488",
+ "BDMAP_00022479",
+ "BDMAP_00022486",
+ "BDMAP_00022484",
+ "BDMAP_00022450",
+ "BDMAP_00022468",
+ "BDMAP_00022476",
+ "BDMAP_00022459",
+ "BDMAP_00022447",
+ "BDMAP_00022460",
+ "BDMAP_00022425",
+ "BDMAP_00022470",
+ "BDMAP_00022483",
+ "BDMAP_00022457",
+ "BDMAP_00022430",
+ "BDMAP_00022480",
+ "BDMAP_00022482",
+ "BDMAP_00022452",
+ "BDMAP_00022464",
+ "BDMAP_00022441",
+ "BDMAP_00022485"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/uterus_json.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/uterus_json.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d1bd86dfaab7c096830b33f3918eebe07ee095a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/data_split/uterus_json.py
@@ -0,0 +1,24 @@
+import os
+from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p
+import csv
+
+
+train_files = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus.json')[0]['train']
+val_files = load_json('/storage/chenqi/code/GEM-3D-ct/data_split/splits_final_uterus.json')[0]['val']
+
+with open('/storage/chenqi/X_data/annotatedtumor_txt/endometrioma_tumor_cases.txt', 'r') as f:
+ all_files=f.readlines()
+all_files = [os.path.basename(i.split(' ')[0]).split('.')[0] for i in all_files]
+all_files = [i.split('\n')[0] for i in all_files]
+print(val_files)
+val_files = ['BDMAP_'+str(int(i.split('BDMAP_endometrioma_')[1])+22411).zfill(8) for i in val_files]
+
+write_content = []
+train_liver = list(set(all_files) - set(val_files))
+breakpoint()
+write_content.append({"train":train_liver, "val":val_files})
+
+# breakpoint()
+
+splits_file = 'splits_uterus.json'
+save_json(write_content, splits_file)
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/environment.yml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/environment.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9fd50656e9218f87ed5c58ad72995d1c9b9dac7e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/environment.yml
@@ -0,0 +1,40 @@
+name: gem_ct
+channels:
+ - pytorch
+ - defaults
+dependencies:
+ - cudatoolkit=11.3
+ - pip=22.3.1
+ - python=3.9.18
+ - pytorch=2.0.0
+ - torchaudio=2.0.0
+ - torchtriton=2.0.0
+ - torchvision=0.15.0
+ - yaml=0.2.5
+ - pip:
+ - argparse==1.4.0
+ - easydict==1.11
+ - einops==0.7.0
+ - imageio==2.31.6
+ - lightning-utilities==0.9.0
+ - lpips==0.1.4
+ - nibabel==5.2.0
+ - numpy==1.26.1
+ - omegaconf==2.1.1
+ - open-clip-torch==2.7.0
+ - opencv-python==4.8.1.78
+ - pandas==2.1.2
+ - pyparsing==3.1.1
+ - pytorch-lightning==1.4.2
+ - scikit-image==0.22.0
+ - scikit-learn==1.3.2
+ - scipy==1.11.3
+ - seaborn==0.13.0
+ - test-tube
+ - tensorboard==2.15.1
+ - tensorboardx==2.6.2.2
+ - torch==2.1.0
+ - torchmetrics==0.5.0
+ - tqdm==4.66.1
+ - transformers==4.29.2
+ - volumentations-3D
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png
new file mode 100644
index 0000000000000000000000000000000000000000..c918291052dba03dfa3705c9cac9e857859d319f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/exp.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c8b04878e46317cce0a4b90ae9c445196add2b6cbc9474c473958b055b122742
+size 112278
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ab9aec087745e0ec59be19fe0263076f44ad6f9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d.py
@@ -0,0 +1,178 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+# breakpoint()
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000053.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+ # breakpoint()
+
+ window_length = 65
+ latent_lenght=17
+ h = 1
+ slice_num =volume_data.shape[2]
+
+ upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h)
+ result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters', upper_iters)
+ # breakpoint()
+ for i in range(upper_iters):
+ print('i', i)
+ input_data={}
+ if i == upper_iters-1:
+ input_data['name'] = data['name']
+ input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data['input_text']
+ else:
+ input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['input_text'] = data['input_text']
+ # breakpoint()
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+ # breakpoint()
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters-1:
+ result[:, -latent_lenght+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result[:, :latent_lenght] = samples_i
+ else:
+ # breakpoint()
+ result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+ # breakpoint()
+ # result = rearrange(result, 'b z c h w -> (b z) c h w')
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0]
+ # breakpoint()
+ else:
+ x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0]
+ # x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0]
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ # breakpoint()
+
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ # x_result = x_result[0,:,0,...].detach().cpu().numpy()
+ # breakpoint()
+ x_result = x_result_.transpose(1,2,0)
+ # x_result = np.rot90(x_result, k=1, axes=(0,1))
+ # x_result = np.flip(x_result,axis=(0,1))
+ # import imageio as io
+ # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8))
+
+ # breakpoint()
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result = x_result*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+
+ breakpoint()
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_2.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_2.py
new file mode 100644
index 0000000000000000000000000000000000000000..18b0e32df562fb8cf06a627eae04edddf656ee0b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_2.py
@@ -0,0 +1,207 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+# breakpoint()
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+ # breakpoint()
+
+ import math
+ # ---- 必要参数 ----
+ window_length = 65 # 输入窗口长度(切片数)
+ latent_lenght = 17 # 每窗输出长度(latent 轴)
+ overleap_lengh = 1 # ★ 输出侧希望的重叠(用于融合)
+ slice_num = volume_data.shape[2]
+ device = next(model.parameters()).device
+
+ # 1) 输出重叠 -> 输入重叠(按比例换算)
+ overlap_in = int(round(overleap_lengh * window_length / max(1, latent_lenght)))
+ overlap_in = max(0, min(window_length - 1, overlap_in)) # 保证 0 <= overlap_in < window_length
+
+ # 2) 输入步长 & upper_iters(首窗从0开始,末窗贴尾)
+ step_in = window_length - overlap_in
+ extra = max(0, slice_num - window_length)
+ upper_iters = 1 + (extra + step_in - 1) // step_in # 等价于 ceil(extra/step_in)
+ print(f"[plan] overlap_in={overlap_in}, step_in={step_in}, upper_iters={upper_iters}")
+
+ # 3) 输出侧拼接步长(latent轴)
+ stride_out = max(1, latent_lenght - overleap_lengh)
+ total_len = latent_lenght + (upper_iters - 1) * stride_out
+ print(f"[plan] stride_out={stride_out}, total_len={total_len}")
+
+ B = batch_size
+ C, H, W = 16, 64, 64
+
+ result_sum = torch.zeros((B, total_len, C, H, W), device=device, dtype=torch.float32)
+ weight_sum = torch.zeros((1, total_len, 1, 1, 1), device=device, dtype=torch.float32)
+
+ x_minus1 = None # 如不需要历史条件,保持 None 即可
+ cond_h = 0 # 若要保留历史条件,可设为 >0,并在采样后取 samples_i[:, -cond_h:]
+
+ for i in range(upper_iters):
+ # ---- 取片:普通窗走 step_in,末窗贴尾 ----
+ if i < upper_iters - 1:
+ st = i * step_in
+ st = max(0, min(st, slice_num - window_length))
+ ed = st + window_length
+ vol_i = data['volume_data'][:, :, st:ed].to(device)
+ seg_i = data['volume_seg'][:, :, st:ed].to(device)
+ else:
+ vol_i = data['volume_data'][:, :, -window_length:].to(device)
+ seg_i = data['volume_seg'][:, :, -window_length:].to(device)
+
+ input_data = {'name': data.get('name', None),
+ 'volume_data': vol_i, 'volume_seg': seg_i,
+ 'input_text': data['input_text']}
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+ if x_minus1 is None or cond_h == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ # ---- 输出侧拼接:平均融合 ----
+ gstart = i * stride_out
+ gend = gstart + latent_lenght
+ result_sum[:, gstart:gend] += samples_i
+ weight_sum[:, gstart:gend] += 1.0
+
+ # 如需历史条件
+ x_minus1 = samples_i[:, -cond_h:, ...] if cond_h > 0 else None
+
+ # 归一化
+ result = result_sum / torch.clamp_min(weight_sum, 1.0)
+
+
+
+
+ # result = rearrange(result, 'b z c h w -> (b z) c h w')
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ res_unit = window_length-dec_unit
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0][:,res_unit:]
+ else:
+ # breakpoint()
+ x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0][:,res_unit:]
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ # breakpoint()
+
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ # x_result = x_result[0,:,0,...].detach().cpu().numpy()
+ # breakpoint()
+ x_result = x_result_.transpose(1,2,0)
+ # x_result = np.rot90(x_result, k=1, axes=(0,1))
+ # x_result = np.flip(x_result,axis=(0,1))
+ # import imageio as io
+ # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8))
+
+ # breakpoint()
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result = x_result*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+
+ breakpoint()
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_3.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_3.py
new file mode 100644
index 0000000000000000000000000000000000000000..771d1bbdccc466cc21a15209378848f13be8b59f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_3.py
@@ -0,0 +1,211 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+# breakpoint()
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+ # breakpoint()
+
+ import math
+ # ---- 必要参数 ----
+ window_length = 65 # 输入窗口长度(切片数)
+ latent_lenght = 17 # 每窗输出长度(latent 轴)
+ overleap_lengh = 8 # ★ 输出侧希望的重叠(用于融合)
+ slice_num = volume_data.shape[2]
+ device = next(model.parameters()).device
+
+ # 1) 输出重叠 -> 输入重叠(按比例换算)
+ overlap_in = int(round(overleap_lengh * window_length / max(1, latent_lenght)))
+ overlap_in = max(0, min(window_length - 1, overlap_in)) # 保证 0 <= overlap_in < window_length
+
+ # 2) 输入步长 & upper_iters(首窗从0开始,末窗贴尾)
+ step_in = window_length - overlap_in
+ extra = max(0, slice_num - window_length)
+ upper_iters = 1 + (extra + step_in - 1) // step_in # 等价于 ceil(extra/step_in)
+ print(f"[plan] overlap_in={overlap_in}, step_in={step_in}, upper_iters={upper_iters}")
+
+ # 3) 输出侧拼接步长(latent轴)
+ stride_out = max(1, latent_lenght - overleap_lengh)
+ total_len = latent_lenght + (upper_iters - 1) * stride_out
+ print(f"[plan] stride_out={stride_out}, total_len={total_len}")
+
+ B = batch_size
+ C, H, W = 16, 64, 64
+
+ result_sum = torch.zeros((B, total_len, C, H, W), device=device, dtype=torch.float32)
+ weight_sum = torch.zeros((1, total_len, 1, 1, 1), device=device, dtype=torch.float32)
+
+ # 1D 高斯权重(长度=latent_lenght);sigma 可随重叠自适应
+ z = torch.arange(latent_lenght, device=device, dtype=torch.float32)
+ center = (latent_lenght - 1) / 2.0
+ sigma = max(overleap_lengh / 2.0, 1.0) # 重叠越大,sigma 越大;下限1.0避免过尖
+ g = torch.exp(-0.5 * ((z - center) / sigma) ** 2)
+ g = g / g.max()
+ g = g.view(1, latent_lenght, 1, 1, 1)
+
+ x_minus1 = None
+ cond_h = 0 # 同上,是否启用历史条件
+
+ for i in range(upper_iters):
+ if i < upper_iters - 1:
+ st = i * step_in
+ st = max(0, min(st, slice_num - window_length))
+ ed = st + window_length
+ vol_i = data['volume_data'][:, :, st:ed].to(device)
+ seg_i = data['volume_seg'][:, :, st:ed].to(device)
+ else:
+ vol_i = data['volume_data'][:, :, -window_length:].to(device)
+ seg_i = data['volume_seg'][:, :, -window_length:].to(device)
+
+ input_data = {'name': data.get('name', None),
+ 'volume_data': vol_i, 'volume_seg': seg_i,
+ 'input_text': data['input_text']}
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+ if x_minus1 is None or cond_h == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ gstart = i * stride_out
+ gend = gstart + latent_lenght
+ result_sum[:, gstart:gend] += samples_i * g
+ weight_sum[:, gstart:gend] += g
+
+ x_minus1 = samples_i[:, -cond_h:, ...] if cond_h > 0 else None
+
+ result = result_sum / torch.clamp_min(weight_sum, 1e-8)
+
+
+
+
+ # result = rearrange(result, 'b z c h w -> (b z) c h w')
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ res_unit = window_length-dec_unit
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0][:,res_unit:]
+ else:
+ # breakpoint()
+ x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0][:,res_unit:]
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ # breakpoint()
+
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ # x_result = x_result[0,:,0,...].detach().cpu().numpy()
+ # breakpoint()
+ x_result = x_result_.transpose(1,2,0)
+ # x_result = np.rot90(x_result, k=1, axes=(0,1))
+ # x_result = np.flip(x_result,axis=(0,1))
+ # import imageio as io
+ # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8))
+
+ # breakpoint()
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result = x_result*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+
+ breakpoint()
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_4.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_4.py
new file mode 100644
index 0000000000000000000000000000000000000000..0b31102794d585b4d1436fdd731557b03a267925
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_4.py
@@ -0,0 +1,203 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+# breakpoint()
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+ # breakpoint()
+
+ import math
+
+ window_length = 65
+ latent_lenght = 17 # 每窗输出 17
+ keep_len = latent_lenght - 1 # 只保留后 16
+ overlap_slices = 4 # 输入体素重叠,>=1 避免断层
+ slice_num = volume_data.shape[2]
+ device = next(model.parameters()).device
+
+ # 输出长度(以“17通道”为单位)与总写入长度
+ result_len = slice_num // window_length + 1
+ result_total_len = result_len * latent_lenght # 你要求的 result 第二维
+ needed_iters = math.ceil(result_total_len / keep_len) # = ceil(result_len*17/16)
+
+ # 体素维 stride(考虑重叠)
+ stride = max(1, window_length - overlap_slices)
+
+ # 结果缓冲
+ result = torch.zeros((batch_size, result_total_len, 16, 64, 64), device='cuda')
+ print(f"result_total_len={result_total_len}, needed_iters={needed_iters}, stride={stride}")
+
+ write_ptr = 0
+ x_minus1 = None
+
+ for i in range(needed_iters):
+ # 体素窗口 [start:end),越界则钉在最后一个完整窗
+ start = min(i * stride, max(0, slice_num - window_length))
+ end = start + window_length
+
+ input_data = {
+ 'input_text' : data['input_text'],
+ 'volume_data': data['volume_data'][:, :, start:end].to(device),
+ 'volume_seg' : data['volume_seg'][:, :, start:end].to(device)
+ }
+ if 'name' in data:
+ input_data['name'] = data['name']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if x_minus1 is None:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght,
+ ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght,
+ ddim=True, eta=1., ddim_steps=ddim_steps,
+ previous=x_minus1)
+
+ # (b*z) c h w -> b z c h w
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+ samples_keep = samples_i[:, 1:, ...] # 丢弃第0个,只保留后16 -> [B,16,16,64,64]
+
+ # 本窗最多写入 keep_len=16,但可能最后一窗只需一部分
+ n_take = min(keep_len, result_total_len - write_ptr)
+ if n_take <= 0:
+ break
+
+ result[:, write_ptr:write_ptr + n_take] = samples_keep[:, :n_take]
+ write_ptr += n_take
+
+ # 传递上一窗最后1个作为 previous,保证跨窗连续
+ x_minus1 = samples_i[:, -1:, ...] # [B,1,16,64,64]
+
+
+
+ # breakpoint()
+ # result = rearrange(result, 'b z c h w -> (b z) c h w')
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0]
+ # breakpoint()
+ else:
+ # breakpoint()
+ x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0]
+ # x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0]
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ # breakpoint()
+
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ # x_result = x_result[0,:,0,...].detach().cpu().numpy()
+ # breakpoint()
+ x_result = x_result_.transpose(1,2,0)
+ # x_result = np.rot90(x_result, k=1, axes=(0,1))
+ # x_result = np.flip(x_result,axis=(0,1))
+ # import imageio as io
+ # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8))
+
+ # breakpoint()
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result = x_result*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+
+ breakpoint()
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_5.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_5.py
new file mode 100644
index 0000000000000000000000000000000000000000..1fc912d026a45a28704c9f185908ba256023baa2
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_5.py
@@ -0,0 +1,220 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+# breakpoint()
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+ # breakpoint()
+
+ import math
+ # ---- 必要参数 ----
+ window_length = 65 # 输入窗口长度(切片数)
+ latent_lenght = 17 # 每窗原始输出长度(latent 轴)
+ overleap_lengh = 1 # ★ 输出侧希望的重叠(用于融合)
+ slice_num = volume_data.shape[2]
+ device = next(model.parameters()).device
+
+ # === 仅保留后16个(丢弃第0个) ===
+ keep_len = max(0, latent_lenght - 1)
+
+ # 1) 输出重叠 -> 输入重叠(按比例换算;用 keep_len)
+ overlap_in = int(round(overleap_lengh * window_length / max(1, keep_len)))
+ overlap_in = max(0, min(window_length - 1, overlap_in)) # 保证 0 <= overlap_in < window_length
+
+ # 2) 输入步长 & upper_iters(首窗从0开始,末窗贴尾)
+ step_in = window_length - overlap_in
+ extra = max(0, slice_num - window_length)
+ upper_iters = 1 + (extra + step_in - 1) // step_in # 等价于 ceil(extra/step_in)
+ print(f"[plan] overlap_in={overlap_in}, step_in={step_in}, upper_iters={upper_iters}")
+
+ # 3) 输出侧拼接步长(latent轴,用 keep_len)
+ stride_out = max(1, keep_len - overleap_lengh)
+ total_len = keep_len + (upper_iters - 1) * stride_out
+ print(f"[plan] stride_out={stride_out}, total_len={total_len}")
+
+ B = batch_size
+ C, H, W = 16, 64, 64
+
+ result_sum = torch.zeros((B, total_len, C, H, W), device=device, dtype=torch.float32)
+ weight_sum = torch.zeros((1, total_len, 1, 1, 1), device=device, dtype=torch.float32)
+
+ # 1D 高斯权重(长度=keep_len);sigma 可随重叠自适应
+ z = torch.arange(keep_len, device=device, dtype=torch.float32)
+ center = (keep_len - 1) / 2.0 if keep_len > 0 else 0.0
+ sigma = max(overleap_lengh / 2.0, 1.0) # 重叠越大,sigma 越大;下限1.0避免过尖
+ g = torch.exp(-0.5 * ((z - center) / sigma) ** 2) if keep_len > 0 else torch.ones(1, device=device)
+ g = g / g.max() if keep_len > 0 else g
+ g = g.view(1, keep_len, 1, 1, 1)
+
+ x_minus1 = None
+ cond_h = 0 # 是否启用历史条件
+
+ for i in range(upper_iters):
+ if i < upper_iters - 1:
+ st = i * step_in
+ st = max(0, min(st, slice_num - window_length))
+ ed = st + window_length
+ vol_i = data['volume_data'][:, :, st:ed].to(device)
+ seg_i = data['volume_seg'][:, :, st:ed].to(device)
+ else:
+ vol_i = data['volume_data'][:, :, -window_length:].to(device)
+ seg_i = data['volume_seg'][:, :, -window_length:].to(device)
+
+ input_data = {
+ 'name': data.get('name', None),
+ 'volume_data': vol_i, 'volume_seg': seg_i,
+ 'input_text': data['input_text']
+ }
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+ if x_minus1 is None or cond_h == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ # (b*z, c, h, w) -> (b, z, c, h, w)
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ # === 关键改动:只拼接后 keep_len 个(丢弃第0个)===
+ kept = samples_i[:, 1:, ...] # shape: (B, keep_len, C, H, W)
+
+ gstart = i * stride_out
+ gend = gstart + keep_len
+ result_sum[:, gstart:gend] += kept * g
+ weight_sum[:, gstart:gend] += g
+
+ # 历史条件(若启用),通常取“保留段”的尾部
+ x_minus1 = kept[:, -cond_h:, ...] if cond_h > 0 else None
+
+ # 融合
+ result = result_sum / torch.clamp_min(weight_sum, 1e-8)
+
+
+ # result = rearrange(result, 'b z c h w -> (b z) c h w')
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ res_unit = window_length-dec_unit
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0][:,res_unit:]
+ else:
+ # breakpoint()
+ x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0][:,res_unit:]
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ # breakpoint()
+
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ # x_result = x_result[0,:,0,...].detach().cpu().numpy()
+ # breakpoint()
+ x_result = x_result_.transpose(1,2,0)
+ # x_result = np.rot90(x_result, k=1, axes=(0,1))
+ # x_result = np.flip(x_result,axis=(0,1))
+ # import imageio as io
+ # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8))
+
+ # breakpoint()
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result = x_result*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+
+ breakpoint()
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new.py
new file mode 100644
index 0000000000000000000000000000000000000000..bdd712d6be125c1130f010f046565fc74f0bdbeb
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new.py
@@ -0,0 +1,285 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+def alternating_volume_fusion(vol1, vol2, offset=32):
+ """
+ Fuse two volumes by alternating between them in segments
+ Rule: z[0-48] from vol1, z[49-80] from vol2 (offset by 32), and so on
+
+ :param vol1: First volume with shape (x, y, z)
+ :param vol2: Second volume with shape (x, y, z-32), offset by 32 slices
+ :param offset: Offset between vol1 and vol2 (default 32)
+ :return: Fused volume with alternating segments, shape (x, y, z)
+ """
+ x, y, total_slices = vol1.shape
+ fused = np.zeros_like(vol1)
+
+ # First segment: z[0:49] from vol1 (49 slices)
+ segment_1_end = 49
+ fused[:, :, 0:segment_1_end] = vol1[:, :, 0:segment_1_end]
+
+ current_pos = segment_1_end
+ use_vol2 = True
+
+ while current_pos < total_slices:
+ if use_vol2:
+ # Use vol2: z[49-80] from vol2, which corresponds to vol2's z[17:49]
+ vol2_start = current_pos - offset # 49 - 32 = 17
+ segment_length = 32 # z[49:81] is 32 slices
+ segment_end = min(current_pos + segment_length, total_slices)
+ vol2_end = vol2_start + (segment_end - current_pos)
+
+ if vol2_start >= 0 and vol2_start < vol2.shape[2]:
+ actual_end = min(vol2_end, vol2.shape[2])
+ copy_length = actual_end - vol2_start
+ fused[:, :, current_pos:current_pos+copy_length] = vol2[:, :, vol2_start:actual_end]
+ current_pos += copy_length
+ else:
+ break
+
+ else:
+ # Use vol1: z[81:130] from vol1 (49 slices)
+ segment_length = 49
+ segment_end = min(current_pos + segment_length, total_slices)
+ fused[:, :, current_pos:segment_end] = vol1[:, :, current_pos:segment_end]
+ current_pos = segment_end
+
+ use_vol2 = not use_vol2
+
+ return fused
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ h = 1
+ slice_num =volume_data.shape[2]
+
+ upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h)
+ result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters', upper_iters)
+
+ for i in range(upper_iters):
+ print('i', i)
+ input_data={}
+ if i == upper_iters-1:
+ input_data['name'] = data['name']
+ input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data['input_text']
+ else:
+ input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['input_text'] = data['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters-1:
+ result[:, -latent_lenght+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result[:, :latent_lenght] = samples_i
+ else:
+ result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0]
+ else:
+ x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0]
+
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ x_result = x_result_.transpose(1,2,0)
+
+ # Process second volume with offset
+ data2={}
+ data2['volume_data'] = data['volume_data'][:, :, 32:] # Fixed: should slice all dimensions properly
+ data2['volume_seg'] = data['volume_seg'][:, :, 32:]
+ data2['name'] = data['name']
+ data2['input_text'] = data['input_text']
+
+ volume_data = data2['volume_data']
+ volume_seg = data2['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ h = 1
+ slice_num =volume_data.shape[2]
+
+ upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h)
+ result2 = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters', upper_iters)
+
+ for i in range(upper_iters):
+ print('i', i)
+ input_data={}
+ if i == upper_iters-1:
+ input_data['name'] = data2['name']
+ input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data2['input_text']
+ else:
+ input_data['volume_data'] = data2['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['input_text'] = data2['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters-1:
+ result2[:, -latent_lenght+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result2[:, :latent_lenght] = samples_i
+ else:
+ result2[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+
+ result2 = result2.permute(0,2,1,3,4)
+ x_result2 = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result2[:,-dec_unit:] = model.decode_first_stage(result2[:,:,-latent_lenght:])[0] # Fixed: was using result instead of result2
+ else:
+ x_result2[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:,:,i*latent_lenght:(i+1)*latent_lenght])[0] # Fixed: same here
+
+ x_result2 = x_result2*2
+ x_result2[x_result2>1.0] = 1.0
+ x_result2[x_result2<-1.0] = -1.0
+ x_result2 = (x_result2+1)/2 # Fixed: typo was x_resul2t
+ x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy()
+ x_result2 = x_result2_.transpose(1,2,0)
+
+ # Fuse volumes using alternating segments
+ # Rule: z[0-48] from x_result, z[49-80] from x_result2, and so on
+ print("Fusing volumes with alternating segments (0-48 from vol1, 49-80 from vol2)...")
+ x_result_fused = alternating_volume_fusion(x_result, x_result2, offset=32)
+
+ # Load reference and save fused result
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result_fused = x_result_fused*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+ print(f"Saved fused volume: {data_path}")
+ breakpoint()
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new2.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new2.py
new file mode 100644
index 0000000000000000000000000000000000000000..925687f91f340560497ba522feb46a53dbe4c8a6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new2.py
@@ -0,0 +1,326 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+def compute_fusion_boundaries(upper_iters, latent_length, h, decode_ratio=4, blend_width=16):
+ """
+ Compute fusion boundaries based on result segments
+
+ :param upper_iters: Number of iterations in the generation loop
+ :param latent_length: Length of latent dimension (17)
+ :param h: Overlap parameter (1)
+ :param decode_ratio: Ratio between decoded and latent dimensions (4)
+ :param blend_width: Width of blending region on each side (16 slices)
+ :return: List of boundary dictionaries for fusion
+ """
+ boundaries = []
+
+ for i in range(1, upper_iters):
+ # Calculate boundary position in latent space
+ latent_boundary = i * latent_length - i * h
+
+ # Convert to decoded space (multiply by decode_ratio)
+ decoded_boundary = latent_boundary * decode_ratio
+
+ # Define blending region: boundary ± blend_width
+ blend_start = max(0, decoded_boundary - blend_width)
+ blend_end = decoded_boundary + blend_width
+
+ boundaries.append({
+ 'boundary': decoded_boundary,
+ 'blend_start': blend_start,
+ 'blend_end': blend_end
+ })
+
+ return boundaries
+
+
+def alternating_volume_fusion_with_boundaries(vol1, vol2, boundaries, offset=32, replace_width=16):
+ """
+ Fuse two volumes by replacing regions around boundaries
+
+ :param vol1: First volume with shape (x, y, z) - used as base
+ :param vol2: Second volume with shape (x, y, z-offset), offset by 32 slices
+ :param boundaries: List of boundary dictionaries from compute_fusion_boundaries
+ :param offset: Offset between vol1 and vol2 (default 32)
+ :param replace_width: Width on each side of boundary to replace (default 16)
+ :return: Fused volume with vol2 replacing vol1 at boundary regions
+ """
+ x, y, total_slices = vol1.shape
+ fused = vol1.copy() # Start with vol1 as base
+
+ # Sort boundaries by position
+ sorted_boundaries = sorted(boundaries, key=lambda b: b['boundary'])
+
+ print(f"Fusion starting with vol1 as base")
+
+ for i, boundary_info in enumerate(sorted_boundaries):
+ boundary = boundary_info['boundary']
+
+ # Define replacement region: boundary ± replace_width
+ replace_start = max(0, boundary - replace_width)
+ replace_end = min(boundary + replace_width, total_slices)
+
+ # Map to vol2 coordinates
+ vol2_start = replace_start - offset
+ vol2_end = replace_end - offset
+
+ # Replace this region with vol2 if valid
+ if vol2_start >= 0 and vol2_end <= vol2.shape[2]:
+ fused[:, :, replace_start:replace_end] = vol2[:, :, vol2_start:vol2_end]
+ print(f" Boundary {i+1}: z={boundary}, replaced z[{replace_start}:{replace_end}] with vol2[{vol2_start}:{vol2_end}]")
+ else:
+ print(f" Boundary {i+1}: z={boundary}, skipped (vol2 out of range)")
+
+ print(f"Fusion complete with {len(sorted_boundaries)} boundaries")
+
+ return fused
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ h = 1
+ slice_num =volume_data.shape[2]
+
+ upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h)
+ result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters', upper_iters)
+
+ for i in range(upper_iters):
+ print('i', i)
+ input_data={}
+ if i == upper_iters-1:
+ input_data['name'] = data['name']
+ input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data['input_text']
+ else:
+ input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['input_text'] = data['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters-1:
+ result[:, -latent_lenght+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result[:, :latent_lenght] = samples_i
+ else:
+ result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[:,-dec_unit:] = model.decode_first_stage(result[:,:,-latent_lenght:])[0]
+ else:
+ x_result[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:,:,i*latent_lenght:(i+1)*latent_lenght])[0]
+
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ x_result = x_result_.transpose(1,2,0)
+
+ # Process second volume with offset
+ data2={}
+ data2['volume_data'] = data['volume_data'][:, :, 32:]
+ data2['volume_seg'] = data['volume_seg'][:, :, 32:]
+ data2['name'] = data['name']
+ data2['input_text'] = data['input_text']
+
+ volume_data = data2['volume_data']
+ volume_seg = data2['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ h = 1
+ slice_num2 = volume_data.shape[2]
+
+ upper_iters2 = (slice_num2-h) // (window_length-h)+1 if (slice_num2-h)%(window_length-h) != 0 else (slice_num2-h) // (window_length-h)
+ result2 = torch.zeros((batch_size, upper_iters2*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters2', upper_iters2)
+
+ for i in range(upper_iters2):
+ print('i', i)
+ input_data={}
+ if i == upper_iters2-1:
+ input_data['name'] = data2['name']
+ input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data2['input_text']
+ else:
+ input_data['volume_data'] = data2['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['input_text'] = data2['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters2-1:
+ result2[:, -latent_lenght+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result2[:, :latent_lenght] = samples_i
+ else:
+ result2[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+
+ result2 = result2.permute(0,2,1,3,4)
+ x_result2 = torch.zeros((3,slice_num2,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num2 // dec_unit + 1 if slice_num2 % dec_unit != 0 else slice_num2 // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result2[:,-dec_unit:] = model.decode_first_stage(result2[:,:,-latent_lenght:])[0]
+ else:
+ x_result2[:,i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:,:,i*latent_lenght:(i+1)*latent_lenght])[0]
+
+ x_result2 = x_result2*2
+ x_result2[x_result2>1.0] = 1.0
+ x_result2[x_result2<-1.0] = -1.0
+ x_result2 = (x_result2+1)/2
+ x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy()
+ x_result2 = x_result2_.transpose(1,2,0)
+
+ # Compute fusion boundaries based on result segments
+ boundaries = compute_fusion_boundaries(
+ upper_iters=upper_iters,
+ latent_length=latent_lenght,
+ h=h,
+ decode_ratio=4,
+ blend_width=16
+ )
+
+ # Fuse volumes: start with vol1, replace regions around boundaries with vol2
+ print("Fusing volumes: replacing boundary regions with vol2...")
+ x_result_fused = alternating_volume_fusion_with_boundaries(
+ x_result,
+ x_result2,
+ boundaries,
+ offset=32,
+ replace_width=8
+ )
+
+ # Load reference and save fused result
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result_fused = x_result_fused*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+ print(f"Saved fused volume: {data_path}")
+ breakpoint()
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new3.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new3.py
new file mode 100644
index 0000000000000000000000000000000000000000..abb2cef44d45b1b1509f53580f3fca7a7bc20aeb
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new3.py
@@ -0,0 +1,334 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+def compute_fusion_boundaries(upper_iters, latent_length, h, decode_ratio=4, blend_width=16):
+ """
+ Compute fusion boundaries based on result segments
+
+ :param upper_iters: Number of iterations in the generation loop
+ :param latent_length: Length of latent dimension (17)
+ :param h: Overlap parameter (1)
+ :param decode_ratio: Ratio between decoded and latent dimensions (4)
+ :param blend_width: Width of blending region on each side (16 slices)
+ :return: List of boundary dictionaries for fusion
+ """
+ boundaries = []
+
+ for i in range(1, upper_iters):
+ # Calculate boundary position in latent space
+ latent_boundary = i * latent_length - i * h
+
+ # Convert to decoded space (multiply by decode_ratio)
+ decoded_boundary = latent_boundary * decode_ratio
+
+ # Define blending region: boundary ± blend_width
+ blend_start = max(0, decoded_boundary - blend_width)
+ blend_end = decoded_boundary + blend_width
+
+ boundaries.append({
+ 'boundary': decoded_boundary,
+ 'blend_start': blend_start,
+ 'blend_end': blend_end
+ })
+
+ return boundaries
+
+
+def alternating_volume_fusion_with_boundaries(vol1, vol2, boundaries, offset=32, replace_width=16):
+ """
+ Fuse two volumes by replacing regions around boundaries
+
+ :param vol1: First volume with shape (x, y, z) - used as base
+ :param vol2: Second volume with shape (x, y, z-offset), offset by 32 slices
+ :param boundaries: List of boundary dictionaries from compute_fusion_boundaries
+ :param offset: Offset between vol1 and vol2 (default 32)
+ :param replace_width: Width on each side of boundary to replace (default 16)
+ :return: Fused volume with vol2 replacing vol1 at boundary regions
+ """
+ x, y, total_slices = vol1.shape
+ fused = vol1.copy() # Start with vol1 as base
+
+ # Sort boundaries by position
+ sorted_boundaries = sorted(boundaries, key=lambda b: b['boundary'])
+
+ print(f"Fusion starting with vol1 as base")
+
+ for i, boundary_info in enumerate(sorted_boundaries):
+ boundary = boundary_info['boundary']
+
+ # Define replacement region: boundary ± replace_width
+ replace_start = max(0, boundary - replace_width)
+ replace_end = min(boundary + replace_width, total_slices)
+
+ # Map to vol2 coordinates
+ vol2_start = replace_start - offset
+ vol2_end = replace_end - offset
+
+ # Replace this region with vol2 if valid
+ if vol2_start >= 0 and vol2_end <= vol2.shape[2]:
+ fused[:, :, replace_start:replace_end] = vol2[:, :, vol2_start:vol2_end]
+ print(f" Boundary {i+1}: z={boundary}, replaced z[{replace_start}:{replace_end}] with vol2[{vol2_start}:{vol2_end}]")
+ else:
+ print(f" Boundary {i+1}: z={boundary}, skipped (vol2 out of range)")
+
+ print(f"Fusion complete with {len(sorted_boundaries)} boundaries")
+
+ return fused
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+
+logdir = 'logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000070.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ h = 1
+ slice_num =volume_data.shape[2]
+
+ upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h)
+ result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters', upper_iters)
+
+ for i in range(upper_iters):
+ print('i', i)
+ input_data={}
+ if i == upper_iters-1:
+ input_data['name'] = data['name']
+ input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data['input_text']
+ else:
+ input_data['volume_data'] = data['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['input_text'] = data['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters-1:
+ result[:, -latent_lenght+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result[:, :latent_lenght] = samples_i
+ else:
+ result[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ # 计算最后一次迭代需要处理的实际切片数
+ remaining_slices = slice_num % dec_unit if slice_num % dec_unit != 0 else dec_unit
+ # 从结果的末尾取对应数量的切片
+ x_result[:, -remaining_slices:] = model.decode_first_stage(result[:, :, -latent_lenght:])[0][:, -remaining_slices:]
+ else:
+ x_result[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:, :, i*latent_lenght:(i+1)*latent_lenght])[0]
+
+
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ x_result = x_result_.transpose(1,2,0)
+
+ # Process second volume with offset
+ data2={}
+ data2['volume_data'] = data['volume_data'][:, :, 32:]
+ data2['volume_seg'] = data['volume_seg'][:, :, 32:]
+ data2['name'] = data['name']
+ data2['input_text'] = data['input_text']
+
+ volume_data = data2['volume_data']
+ volume_seg = data2['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ h = 1
+ slice_num2 = volume_data.shape[2]
+
+ upper_iters2 = (slice_num2-h) // (window_length-h)+1 if (slice_num2-h)%(window_length-h) != 0 else (slice_num2-h) // (window_length-h)
+ result2 = torch.zeros((batch_size, upper_iters2*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters2', upper_iters2)
+
+ for i in range(upper_iters2):
+ print('i', i)
+ input_data={}
+ if i == upper_iters2-1:
+ input_data['name'] = data2['name']
+ input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data2['input_text']
+ else:
+ input_data['volume_data'] = data2['volume_data'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['input_text'] = data2['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters2-1:
+ result2[:, -latent_lenght+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result2[:, :latent_lenght] = samples_i
+ else:
+ result2[:, i*latent_lenght-i*h+h:(i+1)*latent_lenght-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+
+ result2 = result2.permute(0,2,1,3,4)
+ x_result2 = torch.zeros((3,slice_num2,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num2 // dec_unit + 1 if slice_num2 % dec_unit != 0 else slice_num2 // dec_unit
+
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ remaining_slices = slice_num2 % dec_unit if slice_num2 % dec_unit != 0 else dec_unit
+ x_result2[:, -remaining_slices:] = model.decode_first_stage(result2[:, :, -latent_lenght:])[0][:, -remaining_slices:]
+ else:
+ x_result2[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:, :, i*latent_lenght:(i+1)*latent_lenght])[0]
+
+
+ x_result2 = x_result2*2
+ x_result2[x_result2>1.0] = 1.0
+ x_result2[x_result2<-1.0] = -1.0
+ x_result2 = (x_result2+1)/2
+ x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy()
+ x_result2 = x_result2_.transpose(1,2,0)
+
+ # Compute fusion boundaries based on result segments
+ boundaries = compute_fusion_boundaries(
+ upper_iters=upper_iters,
+ latent_length=latent_lenght,
+ h=h,
+ decode_ratio=4,
+ blend_width=16
+ )
+
+ # Fuse volumes: start with vol1, replace regions around boundaries with vol2
+ print("Fusing volumes: replacing boundary regions with vol2...")
+ x_result_fused = alternating_volume_fusion_with_boundaries(
+ x_result,
+ x_result2,
+ boundaries,
+ offset=32,
+ replace_width=8
+ )
+
+ # Load reference and save fused result
+ ref_root = '/sd/shuhan/CT-RATE/dataset/valid_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result_fused = x_result_fused*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+ print(f"Saved fused volume: {data_path}")
+ breakpoint()
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new4.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new4.py
new file mode 100644
index 0000000000000000000000000000000000000000..fca8cfc9b4342f1764749409fd765a3da88d7330
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_abdomen_our_3d_new4.py
@@ -0,0 +1,320 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+def compute_orientation(init_axcodes, final_axcodes):
+ """
+ A thin wrapper around ``nib.orientations.ornt_transform``
+
+ :param init_axcodes: Initial orientation codes
+ :param final_axcodes: Target orientation codes
+ :return: orientations array, start_ornt, end_ornt
+ """
+ ornt_init = nib.orientations.axcodes2ornt(init_axcodes)
+ ornt_fin = nib.orientations.axcodes2ornt(final_axcodes)
+
+ ornt_transf = nib.orientations.ornt_transform(ornt_init, ornt_fin)
+
+ return ornt_transf, ornt_init, ornt_fin
+
+def do_reorientation(data_array, init_axcodes, final_axcodes):
+ """
+ source: https://niftynet.readthedocs.io/en/dev/_modules/niftynet/io/misc_io.html#do_reorientation
+ Performs the reorientation (changing order of axes)
+
+ :param data_array: 3D Array to reorient
+ :param init_axcodes: Initial orientation
+ :param final_axcodes: Target orientation
+ :return data_reoriented: New data array in its reoriented form
+ """
+ ornt_transf, ornt_init, ornt_fin = compute_orientation(init_axcodes, final_axcodes)
+ if np.array_equal(ornt_init, ornt_fin):
+ return data_array
+
+ return nib.orientations.apply_orientation(data_array, ornt_transf)
+
+def compute_fusion_boundaries(upper_iters, latent_length, decode_ratio=4, blend_width=16):
+ """
+ Compute fusion boundaries based on result segments
+
+ :param upper_iters: Number of iterations in the generation loop
+ :param latent_length: Length of latent dimension (17)
+ :param decode_ratio: Ratio between decoded and latent dimensions (4)
+ :param blend_width: Width of blending region on each side (16 slices)
+ :return: List of boundary dictionaries for fusion
+ """
+ boundaries = []
+
+ for i in range(1, upper_iters):
+ # Calculate boundary position in latent space
+ latent_boundary = i * latent_length
+
+ # Convert to decoded space (multiply by decode_ratio)
+ decoded_boundary = latent_boundary * decode_ratio + 1
+
+ # Define blending region: boundary ± blend_width
+ blend_start = max(0, decoded_boundary - blend_width)
+ blend_end = decoded_boundary + blend_width
+
+ boundaries.append({
+ 'boundary': decoded_boundary,
+ 'blend_start': blend_start,
+ 'blend_end': blend_end
+ })
+
+ return boundaries
+
+
+def alternating_volume_fusion_with_boundaries(vol1, vol2, boundaries, offset=32, replace_width=16):
+ """
+ Fuse two volumes by replacing regions around boundaries
+
+ :param vol1: First volume with shape (x, y, z) - used as base
+ :param vol2: Second volume with shape (x, y, z-offset), offset by 32 slices
+ :param boundaries: List of boundary dictionaries from compute_fusion_boundaries
+ :param offset: Offset between vol1 and vol2 (default 32)
+ :param replace_width: Width on each side of boundary to replace (default 16)
+ :return: Fused volume with vol2 replacing vol1 at boundary regions
+ """
+ x, y, total_slices = vol1.shape
+ fused = vol1.copy() # Start with vol1 as base
+
+ # Sort boundaries by position
+ sorted_boundaries = sorted(boundaries, key=lambda b: b['boundary'])
+
+ print(f"Fusion starting with vol1 as base")
+
+ for i, boundary_info in enumerate(sorted_boundaries):
+ boundary = boundary_info['boundary']
+
+ # Define replacement region: boundary ± replace_width
+ replace_start = max(0, boundary - replace_width)
+ replace_end = min(boundary + replace_width, total_slices)
+
+ # Map to vol2 coordinates
+ vol2_start = replace_start - offset
+ vol2_end = replace_end - offset
+
+ # Replace this region with vol2 if valid
+ if vol2_start >= 0 and vol2_end <= vol2.shape[2]:
+ fused[:, :, replace_start:replace_end] = vol2[:, :, vol2_start:vol2_end]
+ print(f" Boundary {i+1}: z={boundary}, replaced z[{replace_start}:{replace_end}] with vol2[{vol2_start}:{vol2_end}]")
+ else:
+ print(f" Boundary {i+1}: z={boundary}, skipped (vol2 out of range)")
+
+ print(f"Fusion complete with {len(sorted_boundaries)} boundaries")
+
+ return fused
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-t",
+ "--time_steps",
+ type=int,
+ default=20,
+)
+args = parser.parse_args()
+ddim_steps=args.time_steps
+
+logdir = 'logs/full_ct_3d_with_body_mask2'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000063.ckpt")
+
+configs_file = "configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml"
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask2.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = f'3d_results_step{ddim_steps}_train_latest'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ slice_num = volume_data.shape[2]
+
+ upper_iters = slice_num // window_length + 1 if slice_num % window_length != 0 else slice_num // window_length
+ result = torch.zeros((batch_size, upper_iters*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters', upper_iters)
+
+ for i in range(upper_iters):
+ print('i', i)
+ input_data={}
+ if i == upper_iters-1:
+ input_data['name'] = data['name']
+ input_data['volume_data'] = data['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data['input_text']
+ else:
+ input_data['volume_data'] = data['volume_data'][:, :, i*window_length:(i+1)*window_length].to(device)
+ input_data['volume_seg'] = data['volume_seg'][:, :, i*window_length:(i+1)*window_length].to(device)
+ input_data['input_text'] = data['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters-1:
+ result[:, -latent_lenght:] = samples_i
+ else:
+ result[:, i*latent_lenght:(i+1)*latent_lenght] = samples_i
+ x_minus1 = samples_i[:, -1:, ...] # Take last slice for next iteration
+
+ result = result.permute(0,2,1,3,4)
+ x_result = torch.zeros((3,slice_num,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ remaining_slices = slice_num % dec_unit if slice_num % dec_unit != 0 else dec_unit
+ x_result[:, -remaining_slices:] = model.decode_first_stage(result[:, :, -latent_lenght:])[0][:, -remaining_slices:]
+ else:
+ x_result[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[:, :, i*latent_lenght:(i+1)*latent_lenght])[0]
+
+ x_result = x_result*2
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ x_result_ = x_result.mean(axis=0).detach().cpu().numpy()
+ x_result = x_result_.transpose(1,2,0)
+
+ # Process second volume with offset
+ data2={}
+ data2['volume_data'] = data['volume_data'][:, :, 32:]
+ data2['volume_seg'] = data['volume_seg'][:, :, 32:]
+ data2['name'] = data['name']
+ data2['input_text'] = data['input_text']
+
+ volume_data = data2['volume_data']
+ volume_seg = data2['volume_seg']
+
+ window_length = 65
+ latent_lenght=17
+ slice_num2 = volume_data.shape[2]
+
+ upper_iters2 = slice_num2 // window_length + 1 if slice_num2 % window_length != 0 else slice_num2 // window_length
+ result2 = torch.zeros((batch_size, upper_iters2*latent_lenght, 16, 64, 64)).cuda()
+ print('upper_iters2', upper_iters2)
+
+ for i in range(upper_iters2):
+ print('i', i)
+ input_data={}
+ if i == upper_iters2-1:
+ input_data['name'] = data2['name']
+ input_data['volume_data'] = data2['volume_data'][:, :, -window_length:].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, -window_length:].to(device)
+ input_data['input_text'] = data2['input_text']
+ else:
+ input_data['volume_data'] = data2['volume_data'][:, :, i*window_length:(i+1)*window_length].to(device)
+ input_data['volume_seg'] = data2['volume_seg'][:, :, i*window_length:(i+1)*window_length].to(device)
+ input_data['input_text'] = data2['input_text']
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=latent_lenght, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=latent_lenght)
+
+ if i == upper_iters2-1:
+ result2[:, -latent_lenght:] = samples_i
+ else:
+ result2[:, i*latent_lenght:(i+1)*latent_lenght] = samples_i
+ x_minus1 = samples_i[:, -1:, ...] # Take last slice for next iteration
+
+ result2 = result2.permute(0,2,1,3,4)
+ x_result2 = torch.zeros((3,slice_num2,512,512))
+ dec_unit = 65
+ dec_latent_unit=17
+ num_dec_iter = slice_num2 // dec_unit + 1 if slice_num2 % dec_unit != 0 else slice_num2 // dec_unit
+
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ remaining_slices = slice_num2 % dec_unit if slice_num2 % dec_unit != 0 else dec_unit
+ x_result2[:, -remaining_slices:] = model.decode_first_stage(result2[:, :, -latent_lenght:])[0][:, -remaining_slices:]
+ else:
+ x_result2[:, i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result2[:, :, i*latent_lenght:(i+1)*latent_lenght])[0]
+
+ x_result2 = x_result2*2
+ x_result2[x_result2>1.0] = 1.0
+ x_result2[x_result2<-1.0] = -1.0
+ x_result2 = (x_result2+1)/2
+ x_result2_ = x_result2.mean(axis=0).detach().cpu().numpy()
+ x_result2 = x_result2_.transpose(1,2,0)
+
+ # Compute fusion boundaries based on result segments
+ boundaries = compute_fusion_boundaries(
+ upper_iters=upper_iters,
+ latent_length=16,
+ decode_ratio=4,
+ blend_width=16
+ )
+
+ # Fuse volumes: start with vol1, replace regions around boundaries with vol2
+ print("Fusing volumes: replacing boundary regions with vol2...")
+ x_result_fused = alternating_volume_fusion_with_boundaries(
+ x_result,
+ x_result2,
+ boundaries,
+ offset=32,
+ replace_width=16
+ )
+
+ # Load reference and save fused result
+ ref_root = '/sd/shuhan/CT-RATE/dataset/train_fixed'
+ ref_nii = os.path.join(ref_root, name.split('_')[0]+'_'+name.split('_')[1], name.split('_')[0]+'_'+name.split('_')[1]+'_'+name.split('_')[2],name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result_fused = x_result_fused*2000.0 - 1000.0
+ data_path = os.path.join(save_path, str(f'{name}_fused.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result_fused.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+ print(f"Saved fused volume: {data_path}")
+ breakpoint()
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_2d_with_body_mask.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_2d_with_body_mask.py
new file mode 100644
index 0000000000000000000000000000000000000000..93cdb65e63122f50fdaff9a32fa944efb83301f1
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_2d_with_body_mask.py
@@ -0,0 +1,80 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+from skimage import io
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+
+
+logdir = 'logs/full_ct_2d_with_body_mask/'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000999.ckpt")
+
+configs_file = sorted(glob.glob(os.path.join(logdir, "configs/*.yaml")))[1]
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_2d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = 'inference'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=0, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+# val_num = 10
+# breakpoint()
+for idx, data in tqdm(enumerate(valloader)):
+ # if idx >= val_num:
+ # break
+ name=data['name'][0].split('.')[0]
+ data['volume_data'] = data['volume_data'].to(device)
+ data['volume_seg'] = data['volume_seg'].to(device)
+ input_text = data['input_text']
+ # .to(device)
+
+ x, c = model.get_input(data, model.first_stage_key)
+ # breakpoint()
+ samples, _ = model.sample_log(cond=c, batch_size=17, ddim=True, eta=1., ddim_steps=100)
+ samples=samples.permute(1,0,2,3)
+
+ res = model.decode_first_stage(samples[None,:])
+ res = res*2
+ # breakpoint()
+ res[res>1.0] = 1.0
+ res[res<-1.0] = -1.0
+ res = (res+1)/2
+ # breakpoint()
+ res = res[0].mean(axis=0).detach().cpu().numpy()
+ # slice_ct=(slice_ct+1)/2
+ # slice_seg=(slice_seg+1)/2
+ for z_slice in range(res.shape[0]):
+ # input_img = np.clip(np.repeat(slice_ct[0,0].detach().cpu().numpy(), 3, 0),0,1) * 255
+ res_slice = np.repeat(res[z_slice][None,], 3, 0).transpose(1,2,0)* 255
+ # slice_seg = np.clip(np.repeat(slice_seg[0,0].detach().cpu().numpy(), 3, 0),0,1) * 255
+
+ io.imsave(os.path.join(save_path, str(name) + f'_sample_{z_slice}.png'), res_slice.astype(np.uint8))
+ # io.imsave(os.path.join(save_path, str(name) + f'_input_img_{z_slice}.png'), input_img.astype(np.uint8))
+ # io.imsave(os.path.join(save_path, str(name) + f'_seg_{z_slice}.png'), slice_seg.astype(np.uint8))
+
+ break
+
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_3d_with_body_mask.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_3d_with_body_mask.py
new file mode 100644
index 0000000000000000000000000000000000000000..9db23d841299b4667798128f8c3bdfa53958117b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/inference_full_ct_3d_with_body_mask.py
@@ -0,0 +1,92 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+from skimage import io
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+
+
+logdir = '/sd/qichen/full_ct_gen/GEM-3D-ct-text4/logs/full_ct_3d_with_body_mask'
+ckpt = os.path.join(logdir, "checkpoints", "epoch=000365.ckpt")
+
+configs_file = sorted(glob.glob(os.path.join(logdir, "configs/*.yaml")))[1]
+configs = OmegaConf.load(configs_file)
+model = instantiate_from_config(configs.model)
+model.init_from_ckpt(ckpt)
+model.eval()
+
+device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
+print("Using device", device)
+model = model.to(device)
+
+config = OmegaConf.load('./configs/latent-diffusion/full_ct_3d_with_body_mask.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+save_path = 'inference'
+save_path = os.path.join(logdir, save_path)
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=0, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+# val_num = 10
+# breakpoint()
+for idx, data in tqdm(enumerate(valloader)):
+ # if idx >= val_num:
+ # break
+ name=data['name'][0].split('.')[0]
+ volume_data = data['volume_data']
+ volume_seg = data['volume_seg']
+ input_text = data['input_text']
+ # breakpoint()
+
+ for z_slice in range(16):
+ slice_seg = volume_seg[:,:,z_slice:z_slice+16]
+ slice_ct = volume_data[:,:,z_slice:z_slice+16]
+ # print("shape:", slice_ct.shape)
+ # print("class:", torch.unique(slice_seg))
+ # breakpoint()
+ input_data = {}
+ input_data['volume_data']=slice_ct.to(device)
+ input_data['volume_seg']=slice_seg.to(device)
+ input_data['input_text']=input_text
+ # breakpoint()
+ x, c = model.get_input(input_data, model.first_stage_key)
+ # breakpoint()
+ samples, _ = model.sample_log(cond=c, batch_size=16, ddim=True, eta=1., ddim_steps=200)
+
+ res = model.decode_first_stage(samples)
+ res[res>1.0] = 1.0
+ res[res<-1.0] = -1.0
+ res = (res+1)/2
+ # breakpoint()
+ res = res.mean(axis=1).detach().cpu().numpy()
+ # breakpoint()
+ slice_ct=(slice_ct+1)/2
+ slice_seg=(slice_seg+1)/2
+ # breakpoint()
+ for z_id in range(16):
+ input_img = np.clip(np.repeat(slice_ct[0,0,z_id][None,:].detach().cpu().numpy(), 3, 0),0,1) * 255
+ res_ = np.repeat(res[z_id][None,:], 3, 0).transpose(1,2,0)* 255
+ slice_seg_ = np.clip(np.repeat(slice_seg[0,0,z_id][None,:].detach().cpu().numpy(), 3, 0),0,1) * 255
+
+ io.imsave(os.path.join(save_path, str(name) + f'_sample_{z_id}.png'), res_.astype(np.uint8))
+ io.imsave(os.path.join(save_path, str(name) + f'_input_img_{z_id}.png'), input_img.astype(np.uint8))
+ io.imsave(os.path.join(save_path, str(name) + f'_seg_{z_id}.png'), slice_seg_.astype(np.uint8))
+
+ break
+
+ break
+
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f915b5f8a0e4d7498dfd635deb34d94d7709cb5b
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ff862daa159d7c546c3719da6905116660de319c
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..96e0ac2a8e7def359ff3af8e7f65b9312577fe5e
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e453f2d5b0036df3ee7c38365874e8752e63f1a3
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/__pycache__/util.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6492a7c954131215fcca1d5e5c4352dbb0e349ed
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..279a50d919c6c282545eb0a893cafc3c22bb9d2c
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8c6854e4985da7553d59e54ee49a86df6de25deb
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7ef82a572cef815fc1fcde1f218f75329bf1c31a
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4a26bc07a188b785fa1e48e3a518598a4412684f
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3a07ad34eccab31cff5c1327e501f50ae03ff867
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8613aefbbece2be667c6928efc9bbc079a7d6f6f
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ac78a5efdd9ff24288213b089e2e3116d6221763
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/base.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7ce55f78c5702287b305c30ee676246ea5f77919
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ca58a3bdb6bc1bdef0cb2ffc8023f706ef857721
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c829d488b1d5356741e3bfca54407b4e991753a1
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3e7a779e0cbf83389c659f6b4463681bc42e7096
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_inference.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..641f230e28e8bd32eedc70bba0ad91cf59c26ed2
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..eab434c6fb9820d168fec783f683e819875e9bcc
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4e5674bbb45c7810b1012329385adcc4c572d7c7
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/ct_clip_data_train.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ed383f6fd9c95c3c7469958670bfc7354ed9843d
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1907a2c3f7e622bfbd30ed4d1695ae84d6a05fe2
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8540131846ede266575be8b28cf01613ea708a73
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass_kl4.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass_kl4.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e9882abf3a382bac957126a313357c8e71fbe076
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_28class_randomclass_kl4.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_resize.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_resize.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f7d0fba4c518af0b3301a66c4927dd453a8731be
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_abdomenatlas_resize.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4f1a0012cb67644b03ecf1e84a4bb91e38220d60
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer_28class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer_28class_randomclass.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..713c768d44b86eb6daace82ae15860befec32ff2
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_infer_28class_randomclass.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_resize.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_resize.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8fd615e3cb140d3415099665880401c4c71c594b
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/slice_dataset_resize.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b7a0f67b0431fdf0c298f0c0ec005907d613caf7
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_13class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_13class_randomclass.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..caeaee882bb9e97f249cb917220d7777d049b3e0
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_13class_randomclass.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_28class_randomclass.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_28class_randomclass.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d13b4f6de861140cbccb08d6d90e0a0afd93a459
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_28class_randomclass.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..896c3e3c012ba432feb5514623797bc129705c77
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7bb6423a19965a0d23fbb13b7c6f8391860e9f89
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/__pycache__/volume_dataset_infer.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/base.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/base.py
new file mode 100644
index 0000000000000000000000000000000000000000..8d0b0a1a55a9b58d716ce7caeaa041070a77546d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/base.py
@@ -0,0 +1,23 @@
+from abc import abstractmethod
+from torch.utils.data import Dataset, ConcatDataset, ChainDataset, IterableDataset
+
+
+class Txt2ImgIterableBaseDataset(IterableDataset):
+ '''
+ Define an interface to make the IterableDatasets for text2img data chainable
+ '''
+ def __init__(self, num_records=0, valid_ids=None, size=256):
+ super().__init__()
+ self.num_records = num_records
+ self.valid_ids = valid_ids
+ self.sample_ids = valid_ids
+ self.size = size
+
+ print(f'{self.__class__.__name__} dataset contains {self.__len__()} examples.')
+
+ def __len__(self):
+ return self.num_records
+
+ @abstractmethod
+ def __iter__(self):
+ pass
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_inference.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_inference.py
new file mode 100644
index 0000000000000000000000000000000000000000..dbe92ae1b925bcb2020e622c3cc8ab08f5fbfbf3
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_inference.py
@@ -0,0 +1,348 @@
+import os
+import glob
+import json
+import torch
+import pandas as pd
+import numpy as np
+from PIL import Image
+from torch.utils.data import Dataset
+import torchvision.transforms as transforms
+from functools import partial
+import torch.nn.functional as F
+import tqdm
+import nibabel as nib
+import copy
+def resize_array(array, current_spacing):
+ """
+ Resize the array to match the target spacing.
+
+ Args:
+ array (torch.Tensor): Input array to be resized.
+ current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing).
+ target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing).
+
+ Returns:
+ np.ndarray: Resized array.
+ """
+ # Calculate new dimensions
+ original_shape = array.shape[2:]
+
+
+ new_shape = [original_shape[0], 512, 512]
+ scaling_factors = [new_shape[i] / original_shape[i] for i in range(len(original_shape))]
+ resized_spacing = [current_spacing[i] / scaling_factors[i] for i in range(len(original_shape))]
+ # Resize the array
+ resized_array = F.interpolate(array, size=new_shape, mode='trilinear', align_corners=False).cpu().numpy()
+ # breakpoint()
+ return resized_array, resized_spacing
+
+def resize_mask(array, current_spacing):
+ """
+ Resize the array to match the target spacing.
+
+ Args:
+ array (torch.Tensor): Input array to be resized.
+ current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing).
+ target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing).
+
+ Returns:
+ np.ndarray: Resized array.
+ """
+ # Calculate new dimensions
+ original_shape = array.shape[2:]
+
+ new_shape = [original_shape[0], 512, 512]
+
+ resized_array = F.interpolate(array, size=new_shape, mode='nearest').cpu().numpy()
+ # breakpoint()
+ return resized_array
+
+class CTReportDatasetinfer(Dataset):
+ def __init__(self, data_folder, csv_file, min_slices=20, resize_dim=500, force_num_frames=True, labels = "labels.csv"):
+ self.data_folder = data_folder
+ self.min_slices = min_slices
+ self.labels = labels
+ self.accession_to_text = self.load_accession_text(csv_file)
+ self.paths=[]
+ self.samples = self.prepare_samples()
+ self.transform = transforms.Compose([
+ transforms.Resize((resize_dim,resize_dim)),
+ transforms.ToTensor()
+ ])
+ self.nii_to_tensor = partial(self.nii_img_to_tensor, transform = self.transform)
+ self.sample_length=65
+
+ def load_accession_text(self, csv_file):
+ df = pd.read_csv(csv_file)
+ accession_to_text = {}
+ for index, row in df.iterrows():
+ accession_to_text[row['VolumeName']] = row["Findings_EN"],row['Impressions_EN']
+ return accession_to_text
+
+
+ def prepare_samples(self):
+ samples = []
+ # patient_folders = glob.glob(os.path.join(self.data_folder, '*'))
+
+ # Read labels once outside the loop
+ test_df = pd.read_csv(self.labels)
+ test_label_cols = list(test_df.columns[1:])
+ test_df['one_hot_labels'] = list(test_df[test_label_cols].values)
+
+ import json
+
+ # with open('/sd/qichen/full_ct_gen/CT-RATE/valid_no_disease_2_checked.json', 'r') as f:
+ # items = [json.loads(line) for line in f]
+
+ # # 2. 提取所有 volume_path
+ # volume_paths = [item['volume_path']
+ # for item in items
+ # if 'volume_path' in item]
+ # organ_masks = [item['organ_mask']
+ # for item in items
+ # if 'organ_mask' in item]
+
+ # for nii_file, organ_mask in tqdm.tqdm(zip(volume_paths, organ_masks)):
+
+ # accession_number = nii_file.split("/")[-1]
+
+ # seg_file = '/sd/shuhan/CT-RATE/'+organ_mask
+ # nii_file = '/sd/shuhan/CT-RATE/'+nii_file
+ # # accession_number = accession_number.replace(".npz", ".nii.gz")
+ # if accession_number not in self.accession_to_text:
+ # continue
+
+ # impression_text = self.accession_to_text[accession_number]
+ # text_final = ""
+ # for text in list(impression_text):
+ # text = str(text)
+ # if text == "Not given.":
+ # text = ""
+
+ # text_final = text_final + text
+
+ # samples.append((nii_file, seg_file, None, text_final, None, None, None))
+
+ with open('/sd/qichen/full_ct_gen/CT-RATE/disease_mask_json/disease_valid_single_prompt_checked_label.json', 'r') as f:
+ items = [json.loads(line) for line in f]
+
+ # 2. 提取所有 volume_path
+ volume_paths = [item['volume_path']
+ for item in items
+ if 'volume_path' in item]
+
+ disease_mask_paths = [item['disease_mask']
+ for item in items
+ if 'disease_mask' in item]
+
+ organ_mask_paths = [item['organ_mask']
+ for item in items
+ if 'organ_mask' in item]
+
+ disease_findings_list = [item['disease_findings']
+ for item in items
+ if 'disease_findings' in item]
+ disease_mask_channels = [item['disease_mask_channel']
+ for item in items
+ if 'disease_mask_channel' in item]
+ disease_labels = [item['disease_label']
+ for item in items
+ if 'disease_label' in item]
+ disease_classes = [item['disease_class']
+ for item in items
+ if 'disease_class' in item]
+ # breakpoint()
+ for (ct_file, organ_mask_file, disease_mask_file, disease_findings, disease_mask_channel, disease_label, disease_class) in tqdm.tqdm(zip(volume_paths, organ_mask_paths, disease_mask_paths, disease_findings_list, disease_mask_channels, disease_labels, disease_classes)):
+
+ accession_number = organ_mask_file.split("/")[-1]
+
+ ct_file = '/sd/shuhan/CT-RATE/'+ct_file
+ organ_file = '/sd/shuhan/CT-RATE/'+organ_mask_file
+ disease_file = '/sd/shuhan/CT-RATE/'+disease_mask_file
+
+ text_final = disease_findings
+
+
+
+ samples.append((ct_file, organ_file, disease_file, text_final, disease_mask_channel, disease_label, disease_class))
+
+
+ return samples
+
+ def __len__(self):
+ return len(self.samples)
+
+ def nii_img_to_tensor(self, ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class, transform):
+ if disease_file == None:
+
+ nii_img = nib.load(str(ct_file))
+ img_data = nii_img.get_fdata()
+
+ df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata
+ file_name = ct_file.split("/")[-1]
+ row = df[df['VolumeName'] == file_name]
+ slope = float(row["RescaleSlope"].iloc[0])
+ intercept = float(row["RescaleIntercept"].iloc[0])
+ xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0])
+ z_spacing = float(row["ZSpacing"].iloc[0])
+
+ nii_seg = nib.load(str(organ_file))
+ mask_data = nii_seg.get_fdata()
+
+ current = (z_spacing, xy_spacing, xy_spacing)
+
+ img_data = img_data.transpose(2, 0, 1)
+ tensor = torch.tensor(img_data)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ img_data, target_spacing = resize_array(tensor, current)
+ img_data = img_data[0][0]
+
+ mask_data = mask_data.transpose(2, 0, 1)
+ tensor = torch.tensor(mask_data)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ mask_data = resize_mask(tensor, current)
+ mask_data = mask_data[0][0]
+ # breakpoint()
+ assert mask_data.shape == img_data.shape
+ fg_mask = (mask_data>0).astype(np.uint8)
+ mask_data = (((mask_data ) / 300)).astype(np.float32) * 2 -1
+
+ hu_min, hu_max = -1000, 1000
+ img_data = np.clip(img_data, hu_min, hu_max)
+
+ bg_np = np.ones_like(img_data) * -1000
+
+ img_data = img_data*fg_mask + bg_np*(1-fg_mask)
+
+
+ img_data = (((img_data ) / 1000)).astype(np.float32)
+ start_id = np.random.randint(0, img_data.shape[0]-self.sample_length)
+ img_data = img_data[start_id:start_id+self.sample_length]
+ mask_data = mask_data[start_id:start_id+self.sample_length]
+
+ # slices=[]
+ img_data = img_data/2.0
+ mask_data = mask_data/2.0
+
+ img_data = torch.tensor(img_data)
+ mask_data = torch.tensor(mask_data)
+
+
+ img_data = img_data.unsqueeze(0)
+ mask_data = mask_data.unsqueeze(0)
+
+ return img_data, mask_data, target_spacing, file_name
+ else:
+ ct_nii = nib.load(str(ct_file))
+ img_data = ct_nii.get_fdata()
+
+ df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata
+ file_name = ct_file.split("/")[-1]
+ row = df[df['VolumeName'] == file_name]
+ slope = float(row["RescaleSlope"].iloc[0])
+ intercept = float(row["RescaleIntercept"].iloc[0])
+ xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0])
+ z_spacing = float(row["ZSpacing"].iloc[0])
+
+ current = (z_spacing, xy_spacing, xy_spacing)
+ img_data = img_data.transpose(2, 0, 1)
+ tensor = torch.tensor(img_data)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ img_data, target_spacing = resize_array(tensor, current)
+ img_data = img_data[0][0]
+
+ organ_nii = nib.load(str(organ_file))
+ organ_mask = organ_nii.get_fdata()
+ organ_mask = organ_mask.transpose(2, 0, 1)
+ tensor = torch.tensor(organ_mask)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ organ_mask = resize_mask(tensor, current)
+ organ_mask = organ_mask[0][0]
+
+ disease_nii = nib.load(str(disease_file))
+ disease_mask = disease_nii.get_fdata()[int(disease_mask_channel)]
+ disease_mask = disease_mask.transpose(2, 0, 1)
+ tensor = torch.tensor(disease_mask)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ disease_mask = resize_mask(tensor, current)
+ disease_mask = disease_mask[0][0]
+
+ assert organ_mask.shape == img_data.shape
+
+ num_slices = img_data.shape[0]
+
+ # 找到 mask>0 的切片索引
+ valid_indices = np.where(disease_mask.sum(axis=(1, 2)) > 0)[0]
+
+ if len(valid_indices) > 0:
+ # 只保留能完整取 sample_length 的起点
+ valid_start_ids = valid_indices[valid_indices <= num_slices - self.sample_length]
+
+ if len(valid_start_ids) > 0:
+ start_id = np.random.choice(valid_start_ids)
+ else:
+ # 如果没有合法起点就退化到随机,但保证能取 sample_length
+ start_id = np.random.randint(0, num_slices - self.sample_length + 1)
+ else:
+ # 如果 mask 全部为0,则完全随机
+ start_id = np.random.randint(0, num_slices - self.sample_length + 1)
+
+ end_id = start_id + self.sample_length # 保证长度严格等于 sample_length
+ img_data = img_data[start_id:end_id]
+ organ_mask = organ_mask[start_id:end_id]
+ disease_mask = disease_mask[start_id:end_id]
+ # img_data = img_data[start_id]
+ # organ_mask = organ_mask[start_id]
+ # disease_mask = disease_mask[start_id]
+
+ organ_disease_mask = copy.deepcopy(organ_mask)
+ organ_disease_mask[disease_mask>0] = disease_class+100
+
+ organ_mask = (((organ_mask ) / 300)).astype(np.float32) * 2 -1
+ organ_disease_mask = (((organ_disease_mask ) / 300)).astype(np.float32) * 2 -1
+
+ hu_min, hu_max = -1000, 1000
+ img_data = np.clip(img_data, hu_min, hu_max)
+ img_data = (((img_data ) / 1000)).astype(np.float32)
+
+ img_data = torch.tensor(img_data)
+ organ_mask = torch.tensor(organ_mask)
+ organ_disease_mask = torch.tensor(organ_disease_mask)
+
+ img_data = img_data/2.0
+ organ_mask = organ_mask/2.0
+ organ_disease_mask = organ_disease_mask/2.0
+
+ img_data = img_data.unsqueeze(0)
+ organ_mask = organ_mask.unsqueeze(0)
+ organ_disease_mask = organ_disease_mask.unsqueeze(0)
+
+
+ # img_data=img_data.repeat(3,1,1,1)
+ # organ_mask=organ_mask.repeat(3,1,1,1)
+ # organ_disease_mask=organ_disease_mask.repeat(3,1,1,1)
+
+
+ # return img_data, organ_mask, organ_disease_mask, target_spacing, file_name
+ # return img_data, organ_mask, target_spacing, file_name
+ return img_data, organ_disease_mask, target_spacing, file_name
+
+
+
+ def __getitem__(self, index):
+ ct_file, organ_file, disease_file, input_text, disease_mask_channel, disease_label, disease_class = self.samples[index]
+ video_tensor, volume_seg, spacing, file_name = self.nii_to_tensor(ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class)
+ input_text = str(input_text)
+ input_text = input_text.replace('"', '')
+ input_text = input_text.replace('\'', '')
+ input_text = input_text.replace('(', '')
+ input_text = input_text.replace(')', '')
+
+ # return video_tensor, input_text
+ example = {}
+ example['name'] = file_name
+ example['volume_data'] = video_tensor.float()
+ example['volume_seg'] = volume_seg.float()
+ example['spacing'] = spacing
+ example['input_text'] = input_text
+ return example
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_train.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_train.py
new file mode 100644
index 0000000000000000000000000000000000000000..2996c2a3cee767aee0a68a397171360b4debceea
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/ct_clip_data_train.py
@@ -0,0 +1,352 @@
+import os
+import glob
+import json
+import torch
+import pandas as pd
+import numpy as np
+from PIL import Image
+from torch.utils.data import Dataset
+import torchvision.transforms as transforms
+from functools import partial
+import torch.nn.functional as F
+import nibabel as nib
+import tqdm
+import copy
+def resize_array(array, current_spacing):
+ """
+ Resize the array to match the target spacing.
+
+ Args:
+ array (torch.Tensor): Input array to be resized.
+ current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing).
+ target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing).
+
+ Returns:
+ np.ndarray: Resized array.
+ """
+ # Calculate new dimensions
+ original_shape = array.shape[2:]
+
+
+ new_shape = [original_shape[0], 512, 512]
+ scaling_factors = [new_shape[i] / original_shape[i] for i in range(len(original_shape))]
+ resized_spacing = [current_spacing[i] / scaling_factors[i] for i in range(len(original_shape))]
+ # Resize the array
+ resized_array = F.interpolate(array, size=new_shape, mode='trilinear', align_corners=False).cpu().numpy()
+ # breakpoint()
+ return resized_array, resized_spacing
+
+def resize_mask(array, current_spacing):
+ """
+ Resize the array to match the target spacing.
+
+ Args:
+ array (torch.Tensor): Input array to be resized.
+ current_spacing (tuple): Current voxel spacing (z_spacing, xy_spacing, xy_spacing).
+ target_spacing (tuple): Target voxel spacing (target_z_spacing, target_x_spacing, target_y_spacing).
+
+ Returns:
+ np.ndarray: Resized array.
+ """
+ # Calculate new dimensions
+ original_shape = array.shape[2:]
+
+ new_shape = [original_shape[0], 512, 512]
+
+ resized_array = F.interpolate(array, size=new_shape, mode='nearest').cpu().numpy()
+ # breakpoint()
+ return resized_array
+
+class CTReportDataset(Dataset):
+ def __init__(self, data_folder, csv_file, min_slices=20, resize_dim=500, force_num_frames=True):
+ self.data_folder = data_folder
+ self.min_slices = min_slices
+ self.accession_to_text = self.load_accession_text(csv_file)
+ self.paths=[]
+ self.samples = self.prepare_samples()
+ percent = 80
+ num_files = int((len(self.samples) * percent) / 100)
+ #num_files = 2286
+ self.samples = self.samples[:num_files]
+ print(len(self.samples))
+ self.count = 0
+
+
+ #self.resize_dim = resize_dim
+ #self.resize_transform = transforms.Resize((resize_dim, resize_dim))
+ self.transform = transforms.Compose([
+ transforms.Resize((resize_dim,resize_dim)),
+ transforms.ToTensor()
+ ])
+ self.nii_to_tensor = partial(self.nii_img_to_tensor, transform = self.transform)
+ self.sample_length=65
+
+ def load_accession_text(self, csv_file):
+ df = pd.read_csv(csv_file)
+ accession_to_text = {}
+ for index, row in df.iterrows():
+ # breakpoint()
+ accession_to_text[row['VolumeName']] = row["Findings_EN"],row['Impressions_EN']
+
+ return accession_to_text
+
+
+ def prepare_samples(self):
+ samples = []
+ import json
+
+ # with open('/sd/qichen/full_ct_gen/CT-RATE/train_no_disease_2_checked.json', 'r') as f:
+ # items = [json.loads(line) for line in f]
+
+ # # 2. 提取所有 volume_path
+ # volume_paths = [item['volume_path']
+ # for item in items
+ # if 'volume_path' in item]
+ # organ_masks = [item['organ_mask']
+ # for item in items
+ # if 'organ_mask' in item]
+ # for nii_file, organ_mask in tqdm.tqdm(zip(volume_paths, organ_masks)):
+
+ # accession_number = nii_file.split("/")[-1]
+
+ # seg_file = '/sd/shuhan/CT-RATE/'+ organ_mask
+ # nii_file = '/sd/shuhan/CT-RATE/'+nii_file
+
+ # if accession_number not in self.accession_to_text:
+ # continue
+
+ # impression_text = self.accession_to_text[accession_number]
+
+ # if impression_text == "Not given.":
+ # impression_text=""
+
+ # input_text_concat = ""
+ # for text in impression_text:
+ # input_text_concat = input_text_concat + str(text)
+ # input_text_concat = impression_text[0]
+ # input_text = f'{impression_text}'
+ # samples.append((nii_file, seg_file, None, input_text_concat, None, None, None))
+ # self.paths.append(nii_file)
+
+ with open('/sd/qichen/full_ct_gen/CT-RATE/disease_mask_json/disease_train_single_prompt_checked_label.json', 'r') as f:
+ items = [json.loads(line) for line in f]
+
+ # 2. 提取所有 volume_path
+ volume_paths = [item['volume_path']
+ for item in items
+ if 'volume_path' in item]
+
+ effusion_mask_paths = [item['disease_mask']
+ for item in items
+ if 'disease_mask' in item]
+
+ organ_mask_paths = [item['organ_mask']
+ for item in items
+ if 'organ_mask' in item]
+
+ disease_findings_list = [item['disease_findings']
+ for item in items
+ if 'disease_findings' in item]
+
+ disease_mask_channels = [item['disease_mask_channel']
+ for item in items
+ if 'disease_mask_channel' in item]
+ disease_labels = [item['disease_label']
+ for item in items
+ if 'disease_label' in item]
+ disease_classes = [item['disease_class']
+ for item in items
+ if 'disease_class' in item]
+
+ for (ct_file, organ_mask_file, disease_mask_file, disease_findings, disease_mask_channel, disease_label, disease_class) in tqdm.tqdm(zip(volume_paths, organ_mask_paths, effusion_mask_paths, disease_findings_list, disease_mask_channels, disease_labels, disease_classes)):
+
+ accession_number = organ_mask_file.split("/")[-1]
+
+ ct_file = '/sd/shuhan/CT-RATE/'+ct_file
+ organ_file = '/sd/shuhan/CT-RATE/'+organ_mask_file
+ disease_file = '/sd/shuhan/CT-RATE/'+disease_mask_file
+
+ impression_text = disease_findings
+
+ samples.append((ct_file, organ_file, disease_file, impression_text, disease_mask_channel, disease_label, disease_class))
+
+ return samples
+
+ def __len__(self):
+ return len(self.samples)
+
+
+ def nii_img_to_tensor(self, ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class, transform):
+ if disease_file == None:
+
+ nii_img = nib.load(str(ct_file))
+ img_data = nii_img.get_fdata()
+
+ df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata
+ file_name = ct_file.split("/")[-1]
+ row = df[df['VolumeName'] == file_name]
+ slope = float(row["RescaleSlope"].iloc[0])
+ intercept = float(row["RescaleIntercept"].iloc[0])
+ xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0])
+ z_spacing = float(row["ZSpacing"].iloc[0])
+
+ nii_seg = nib.load(str(organ_file))
+ mask_data = nii_seg.get_fdata()
+
+ current = (z_spacing, xy_spacing, xy_spacing)
+
+ img_data = img_data.transpose(2, 0, 1)
+ tensor = torch.tensor(img_data)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ img_data, target_spacing = resize_array(tensor, current)
+ img_data = img_data[0][0]
+
+ mask_data = mask_data.transpose(2, 0, 1)
+ tensor = torch.tensor(mask_data)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ mask_data = resize_mask(tensor, current)
+ mask_data = mask_data[0][0]
+ # breakpoint()
+ assert mask_data.shape == img_data.shape
+ fg_mask = (mask_data>0).astype(np.uint8)
+ mask_data = (((mask_data ) / 300)).astype(np.float32) * 2 -1
+
+ hu_min, hu_max = -1000, 1000
+ img_data = np.clip(img_data, hu_min, hu_max)
+
+ bg_np = np.ones_like(img_data) * -1000
+
+ img_data = img_data*fg_mask + bg_np*(1-fg_mask)
+
+
+ img_data = (((img_data ) / 1000)).astype(np.float32)
+ start_id = np.random.randint(0, img_data.shape[0]-self.sample_length)
+ img_data = img_data[start_id:start_id+self.sample_length]
+ mask_data = mask_data[start_id:start_id+self.sample_length]
+
+ # slices=[]
+ img_data = img_data/2.0
+ mask_data = mask_data/2.0
+
+ img_data = torch.tensor(img_data)
+ mask_data = torch.tensor(mask_data)
+
+
+ img_data = img_data.unsqueeze(0)
+ mask_data = mask_data.unsqueeze(0)
+
+ return img_data, mask_data, target_spacing, file_name
+ else:
+ ct_nii = nib.load(str(ct_file))
+ img_data = ct_nii.get_fdata()
+
+ df = pd.read_csv("/sd/shuhan/CT-RATE/metadata/all_metadata.csv") #select the metadata
+ file_name = ct_file.split("/")[-1]
+ row = df[df['VolumeName'] == file_name]
+ slope = float(row["RescaleSlope"].iloc[0])
+ intercept = float(row["RescaleIntercept"].iloc[0])
+ xy_spacing = float(row["XYSpacing"].iloc[0][1:][:-2].split(",")[0])
+ z_spacing = float(row["ZSpacing"].iloc[0])
+
+ current = (z_spacing, xy_spacing, xy_spacing)
+ img_data = img_data.transpose(2, 0, 1)
+ tensor = torch.tensor(img_data)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ img_data, target_spacing = resize_array(tensor, current)
+ img_data = img_data[0][0]
+
+ organ_nii = nib.load(str(organ_file))
+ organ_mask = organ_nii.get_fdata()
+ organ_mask = organ_mask.transpose(2, 0, 1)
+ tensor = torch.tensor(organ_mask)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ organ_mask = resize_mask(tensor, current)
+ organ_mask = organ_mask[0][0]
+
+ disease_nii = nib.load(str(disease_file))
+ disease_mask = disease_nii.get_fdata()[int(disease_mask_channel)]
+ disease_mask = disease_mask.transpose(2, 0, 1)
+ tensor = torch.tensor(disease_mask)
+ tensor = tensor.unsqueeze(0).unsqueeze(0)
+ disease_mask = resize_mask(tensor, current)
+ disease_mask = disease_mask[0][0]
+
+ assert organ_mask.shape == img_data.shape
+
+ num_slices = img_data.shape[0]
+
+ # 找到 mask>0 的切片索引
+ valid_indices = np.where(disease_mask.sum(axis=(1, 2)) > 0)[0]
+
+ if len(valid_indices) > 0:
+ # 只保留能完整取 sample_length 的起点
+ valid_start_ids = valid_indices[valid_indices <= num_slices - self.sample_length]
+
+ if len(valid_start_ids) > 0:
+ start_id = np.random.choice(valid_start_ids)
+ else:
+ # 如果没有合法起点就退化到随机,但保证能取 sample_length
+ start_id = np.random.randint(0, num_slices - self.sample_length + 1)
+ else:
+ # 如果 mask 全部为0,则完全随机
+ start_id = np.random.randint(0, num_slices - self.sample_length + 1)
+
+ end_id = start_id + self.sample_length # 保证长度严格等于 sample_length
+ img_data = img_data[start_id:end_id]
+ organ_mask = organ_mask[start_id:end_id]
+ disease_mask = disease_mask[start_id:end_id]
+ # img_data = img_data[start_id]
+ # organ_mask = organ_mask[start_id]
+ # disease_mask = disease_mask[start_id]
+
+ organ_disease_mask = copy.deepcopy(organ_mask)
+ organ_disease_mask[disease_mask>0] = disease_class+100
+
+ organ_mask = (((organ_mask ) / 300)).astype(np.float32) * 2 -1
+ organ_disease_mask = (((organ_disease_mask ) / 300)).astype(np.float32) * 2 -1
+
+ hu_min, hu_max = -1000, 1000
+ img_data = np.clip(img_data, hu_min, hu_max)
+ img_data = (((img_data ) / 1000)).astype(np.float32)
+
+ img_data = torch.tensor(img_data)
+ organ_mask = torch.tensor(organ_mask)
+ organ_disease_mask = torch.tensor(organ_disease_mask)
+
+ img_data = img_data/2.0
+ organ_mask = organ_mask/2.0
+ organ_disease_mask = organ_disease_mask/2.0
+
+ img_data = img_data.unsqueeze(0)
+ organ_mask = organ_mask.unsqueeze(0)
+ organ_disease_mask = organ_disease_mask.unsqueeze(0)
+
+
+ # img_data=img_data.repeat(3,1,1,1)
+ # organ_mask=organ_mask.repeat(3,1,1,1)
+ # organ_disease_mask=organ_disease_mask.repeat(3,1,1,1)
+
+
+ # return img_data, organ_mask, organ_disease_mask, target_spacing, file_name
+ # return img_data, organ_mask, target_spacing, file_name
+ return img_data, organ_disease_mask, target_spacing, file_name
+
+
+
+ def __getitem__(self, index):
+ ct_file, organ_file, disease_file, input_text, disease_mask_channel, disease_label, disease_class = self.samples[index]
+ video_tensor, volume_seg, spacing, file_name = self.nii_to_tensor(ct_file, organ_file, disease_file, disease_mask_channel, disease_label, disease_class)
+ input_text = str(input_text)
+ input_text = input_text.replace('"', '')
+ input_text = input_text.replace('\'', '')
+ input_text = input_text.replace('(', '')
+ input_text = input_text.replace(')', '')
+
+ # return video_tensor, input_text
+ example = {}
+ example['name'] = file_name
+ example['volume_data'] = video_tensor.float()
+ example['volume_seg'] = volume_seg.float()
+ example['spacing'] = spacing
+ example['input_text'] = input_text
+ return example
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/mask_generation.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/mask_generation.py
new file mode 100644
index 0000000000000000000000000000000000000000..c8ac71405628b5dd6fdc9ab2c599ead4c260845b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/mask_generation.py
@@ -0,0 +1,61 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+
+class volume_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ file_list = []
+ for line in open(data_file):
+ name = line.strip().split()[1].split('.nii.gz')[0]
+ name = name.split('/')[-1]
+ file_list.append(name)
+
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self.sample_length=16
+ self.sample=False
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ seg_npz = np.load(npz_file)['seg'][0]
+
+ volume_seg = volume_seg.astype(np.float32)
+
+ return volume_seg
+
+class volume_train(volume_base):
+ def __init__(self, data_file='data_split/liver/train.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+
+class volume_val(volume_base):
+ def __init__(self, data_file='data_split/liver/eval.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class volume_test(volume_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..e9387be62d79305474c66be20b32ce6b5d8e9014
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset.py
@@ -0,0 +1,103 @@
+import os
+import numpy as np
+# from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p
+
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_repeat=1,
+ planner='nnUNetPlans_3d_fullres',
+ data_file='data_split/liver/train.txt',
+ phase='train',
+ ):
+
+ self.data_root = data_root
+ # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+
+ file_list = []
+ if 'liver' in data_file:
+ for line in open(data_file):
+ name = line.strip().split()[1].split('.nii.gz')[0]
+ name = name.split('/')[-1]
+ file_list.append(name)
+ else:
+ file_list = load_json(data_file)[0][phase]
+
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # print('data_npz', data_npz.shape)
+ # print('seg_npz', seg_npz.shape)
+ # breakpoint()
+ pos_id = np.random.randint(0, data_npz.shape[0])
+ # pos_id = data_npz.shape[0]//2
+ slice_data = data_npz[pos_id]
+ slice_seg = seg_npz[pos_id]
+
+ # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant')
+ # breakpoint()
+ slice_data[slice_data <= -175] = -175
+ slice_data[slice_data >= 250] = 250
+ # breakpoint()
+ slice_data = (slice_data+175)/425.0
+
+ # tumor_mask = (slice_seg==2).astype(np.float32)
+ slice_seg = slice_seg.astype(np.float32)
+ foreground_mask = (slice_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*slice_data
+
+ slice_data = slice_data[:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,None].astype(np.float32)
+
+ # tumor_mask = resize(tumor_mask, (64,64), order=0)
+ slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST)
+ slice_seg = slice_seg[:,:,None].astype(np.float32)
+ # print(np.unique(slice_seg))
+ # breakpoint()
+ if (slice_data.shape[0] != 512) or (slice_data.shape[1] != 512):
+ print(self.list[i],slice_data.shape,masked_data.shape,slice_seg.shape)
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = slice_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = slice_seg
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, phase='train', **kwargs):
+ super().__init__(phase=phase, **kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, phase='val', **kwargs):
+ super().__init__(phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2e53d2b753b22444d3415c651efad0771dca662d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset__.py
@@ -0,0 +1,81 @@
+import os
+import numpy as np
+# from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ # data_file,
+ data_repeat=1
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+ self.list.sort()
+ # breakpoint()
+ self.list = self.list[:5]
+ # file_list = []
+ # with open(data_file, 'r') as f:
+ # file_list = f.readlines()
+ # file_list = [i.split('\n')[0] for i in file_list]
+ # self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+ # breakpoint()
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+
+ # pos_id = np.random.randint(0, data_npz.shape[0])
+ # pos_id = data_npz.shape[0]//2
+ # slice_data = data_npz[pos_id]
+ # slice_seg = seg_npz[pos_id]
+
+ # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant')
+ # breakpoint()
+ data_npz[data_npz <= -175] = -175
+ data_npz[data_npz >= 250] = 250
+ # breakpoint()
+ data_npz = (data_npz+175)/425.0
+
+ data_npz = data_npz[:,:,:,None].astype(np.float32)
+
+ # breakpoint()
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = data_npz * 2 - 1
+
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, **kwargs):
+ super().__init__( **kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class.py
new file mode 100644
index 0000000000000000000000000000000000000000..de79231129330e28794129304585ca12e9b1476c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class.py
@@ -0,0 +1,99 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+from batchgenerators.utilities.file_and_folder_operations import load_json
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1,
+ phase='train',
+ planner='nnUNetPlans_3d_fullres'
+ ):
+
+ self.data_root = data_root
+ # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+
+ data_splits = load_json(data_file)
+ file_list = data_splits[0][phase]
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # print(npz_file, data_npz.shape, seg_npz.shape)
+ # breakpoint()
+ pos_id = np.random.randint(0, data_npz.shape[0])
+ # pos_id = data_npz.shape[0]//2
+ slice_data = data_npz[pos_id]
+ slice_seg = seg_npz[pos_id]
+
+ # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant')
+ # breakpoint()
+ slice_data[slice_data <= -175] = -175
+ slice_data[slice_data >= 250] = 250
+ # breakpoint()
+ slice_data = (slice_data+175)/425.0
+
+
+ # slice_data = resize(slice_data, (512,512))
+ # slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False)
+ # breakpoint()
+
+ # tumor_mask = (slice_seg==2).astype(np.float32)
+ slice_seg = slice_seg.astype(np.float32)
+ foreground_mask = (slice_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*slice_data
+
+ slice_data = slice_data[:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,None].astype(np.float32)
+
+ # breakpoint()
+ # tumor_mask = resize(tumor_mask, (64,64), order=0)
+ slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST)
+ slice_seg = slice_seg[:,:,None].astype(np.float32)
+ # print(np.unique(slice_seg))
+ # breakpoint()
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = slice_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = slice_seg
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, data_file='data_split/splits_final2.json', phase='train', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, data_file='data_split/splits_final2.json', phase='val', **kwargs):
+ super().__init__(data_file=data_file,phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d2095b5a685e098685ee2028c817634cf28feb4
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass.py
@@ -0,0 +1,127 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+# from batchgenerators.utilities.file_and_folder_operations import load_json
+
+import random
+import itertools
+
+def get_random_classes_from_mask(mask):
+ # 分析 mask 中有哪些类别
+ unique_classes = np.unique(mask)
+ unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0)
+
+ # 获取所有可能的类别组合
+ all_combinations = []
+ for i in range(1, len(unique_classes) + 1):
+ all_combinations.extend(itertools.combinations(unique_classes, i))
+
+ # 随机选择一个组合
+ selected_combination = random.choice(all_combinations)
+ return selected_combination
+
+def get_filtered_mask(mask, selected_classes):
+ # 创建只包含选定类别的 mask
+ filtered_mask = np.isin(mask, selected_classes) * mask
+ return filtered_mask
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_repeat=1,
+ phase='train',
+ planner='nnUNetPlans_3d_fullres',
+ data_file=None
+ ):
+
+ self.data_root = data_root
+ # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+
+ data_splits = load_json(data_file)
+ file_list = data_splits[0][phase]
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+ self.class_num = 28
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # print(npz_file, data_npz.shape, seg_npz.shape)
+ # breakpoint()
+ pos_id = np.random.randint(0, data_npz.shape[0])
+ slice_data = data_npz[pos_id]
+ slice_seg = seg_npz[pos_id]
+
+ # breakpoint()
+ slice_data[slice_data <= -175] = -175
+ slice_data[slice_data >= 250] = 250
+ slice_data = (slice_data+175)/425.0
+
+ # print(np.unique(slice_seg))
+ if len(np.unique(slice_seg)) > 1:
+ selected_classes = get_random_classes_from_mask(slice_seg)
+ slice_seg = get_filtered_mask(slice_seg, selected_classes)
+ # print(np.unique(slice_seg))
+
+ # breakpoint()
+
+ # slice_data = resize(slice_data, (512,512))
+ # slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False)
+ # breakpoint()
+
+ # tumor_mask = (slice_seg==2).astype(np.float32)
+ slice_seg = slice_seg.astype(np.float32)
+ foreground_mask = (slice_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*slice_data
+
+ slice_data = slice_data[:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,None].astype(np.float32)
+
+ # breakpoint()
+ # tumor_mask = resize(tumor_mask, (64,64), order=0)
+ slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST)
+ slice_seg = slice_seg[:,:,None].astype(np.float32)
+ if (slice_data.shape[0] != 512) or (slice_data.shape[1] != 512):
+ print(self.list[i],slice_data.shape,masked_data.shape,slice_seg.shape)
+ # print(np.unique(slice_seg))
+ # breakpoint()
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = slice_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = slice_seg
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, phase='train', **kwargs):
+ super().__init__(**kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, phase='val', **kwargs):
+ super().__init__(phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass_kl4.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass_kl4.py
new file mode 100644
index 0000000000000000000000000000000000000000..433c1f35318ec318496c4397c1b6b3bdb1c73831
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_28class_randomclass_kl4.py
@@ -0,0 +1,127 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+from batchgenerators.utilities.file_and_folder_operations import load_json
+
+import random
+import itertools
+
+def get_random_classes_from_mask(mask):
+ # 分析 mask 中有哪些类别
+ unique_classes = np.unique(mask)
+ unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0)
+
+ # 获取所有可能的类别组合
+ all_combinations = []
+ for i in range(1, len(unique_classes) + 1):
+ all_combinations.extend(itertools.combinations(unique_classes, i))
+
+ # 随机选择一个组合
+ selected_combination = random.choice(all_combinations)
+ return selected_combination
+
+def get_filtered_mask(mask, selected_classes):
+ # 创建只包含选定类别的 mask
+ filtered_mask = np.isin(mask, selected_classes) * mask
+ return filtered_mask
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_repeat=1,
+ phase='train',
+ planner='nnUNetPlans_3d_fullres',
+ data_file=None
+ ):
+
+ self.data_root = data_root
+ # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+
+ data_splits = load_json(data_file)
+ file_list = data_splits[0][phase]
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+ self.class_num = 28
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # print(npz_file, data_npz.shape, seg_npz.shape)
+ # breakpoint()
+ pos_id = np.random.randint(0, data_npz.shape[0])
+ slice_data = data_npz[pos_id]
+ slice_seg = seg_npz[pos_id]
+
+ # breakpoint()
+ slice_data[slice_data <= -175] = -175
+ slice_data[slice_data >= 250] = 250
+ slice_data = (slice_data+175)/425.0
+
+ # print(np.unique(slice_seg))
+ if len(np.unique(slice_seg)) > 1:
+ selected_classes = get_random_classes_from_mask(slice_seg)
+ slice_seg = get_filtered_mask(slice_seg, selected_classes)
+ # print(np.unique(slice_seg))
+
+ # breakpoint()
+
+ # slice_data = resize(slice_data, (512,512))
+ # slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False)
+ # breakpoint()
+
+ # tumor_mask = (slice_seg==2).astype(np.float32)
+ slice_seg = slice_seg.astype(np.float32)
+ foreground_mask = (slice_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*slice_data
+
+ slice_data = slice_data[:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,None].astype(np.float32)
+
+ # breakpoint()
+ # tumor_mask = resize(tumor_mask, (64,64), order=0)
+ slice_seg = cv2.resize(slice_seg,(128,128),interpolation=cv2.INTER_NEAREST)
+ slice_seg = slice_seg[:,:,None].astype(np.float32)
+ if (slice_data.shape[0] != 512) or (slice_data.shape[1] != 512):
+ print(self.list[i],slice_data.shape,masked_data.shape,slice_seg.shape)
+ # print(np.unique(slice_seg))
+ # breakpoint()
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = slice_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = slice_seg
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, phase='train', **kwargs):
+ super().__init__(**kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, phase='val', **kwargs):
+ super().__init__(phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_resize.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_resize.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6a1947ac15fb14f791800d0746a7ae1e796e429
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_abdomenatlas_resize.py
@@ -0,0 +1,97 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+from batchgenerators.utilities.file_and_folder_operations import load_json
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1,
+ phase='train'
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+
+ data_splits = load_json(data_file)
+ file_list = data_splits[0][phase]
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # breakpoint()
+ pos_id = np.random.randint(0, data_npz.shape[0])
+ # pos_id = data_npz.shape[0]//2
+ slice_data = data_npz[pos_id]
+ slice_seg = seg_npz[pos_id]
+
+ # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant')
+ # breakpoint()
+ slice_data[slice_data <= -175] = -175
+ slice_data[slice_data >= 250] = 250
+ # breakpoint()
+ slice_data = (slice_data+175)/425.0
+
+
+ slice_data = resize(slice_data, (512,512))
+ slice_seg = resize(slice_seg.astype(np.float32), (512,512), order=0, anti_aliasing=False)
+ # breakpoint()
+
+ # tumor_mask = (slice_seg==2).astype(np.float32)
+ slice_seg = slice_seg.astype(np.float32)
+ foreground_mask = (slice_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*slice_data
+
+ slice_data = slice_data[:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,None].astype(np.float32)
+
+ # breakpoint()
+ # tumor_mask = resize(tumor_mask, (64,64), order=0)
+ slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST)
+ slice_seg = slice_seg[:,:,None].astype(np.float32)
+ # print(np.unique(slice_seg))
+ # breakpoint()
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = slice_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = slice_seg
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, data_file='data_split/splits_final.json', phase='train', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, data_file='data_split/splits_final.json', phase='val', **kwargs):
+ super().__init__(data_file=data_file,phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer.py
new file mode 100644
index 0000000000000000000000000000000000000000..4416966f0e6355055edeb71164fb956153aaae14
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer.py
@@ -0,0 +1,94 @@
+import os
+import numpy as np
+# from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+ file_list = []
+ for line in open(data_file):
+ name = line.strip().split()[1].split('.nii.gz')[0]
+ name = name.split('/')[-1]
+ file_list.append(name)
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # breakpoint()
+ # pos_id = np.random.randint(0, data_npz.shape[0])
+ # pos_id = data_npz.shape[0]//2
+ pos_id_list = np.where(np.any(data_npz==2, axis=(1, 2)))[0]
+ pos_id = pos_id_list[len(pos_id_list)//2]
+ # breakpoint()
+ slice_data = data_npz[pos_id]
+ slice_seg = seg_npz[pos_id]
+ # breakpoint()
+ # slice_data = np.pad(slice_data,((0,0),(8,8),(8,8)),'constant')
+ # breakpoint()
+ slice_data[slice_data <= -175] = -175
+ slice_data[slice_data >= 250] = 250
+ # breakpoint()
+ slice_data = (slice_data+175)/425.0
+
+ # tumor_mask = (slice_seg==2).astype(np.float32)
+ slice_seg = slice_seg.astype(np.float32)
+ foreground_mask = (slice_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*slice_data
+
+ slice_data = slice_data[:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,None].astype(np.float32)
+
+ # tumor_mask = resize(tumor_mask, (64,64), order=0)
+ slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST)
+ slice_seg = slice_seg[:,:,None].astype(np.float32)
+ # print(np.unique(slice_seg))
+ # breakpoint()
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = slice_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = slice_seg
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, data_file='data_split/liver/train.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, data_file='data_split/liver/eval.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer_28class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer_28class_randomclass.py
new file mode 100644
index 0000000000000000000000000000000000000000..85a7a9bc7054e71e59c62a25e6f3fdeb31c1b2bf
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/slice_dataset_infer_28class_randomclass.py
@@ -0,0 +1,99 @@
+import os
+import numpy as np
+# from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+
+def get_filtered_mask(mask, selected_classes):
+ # 创建只包含选定类别的 mask
+ filtered_mask = np.isin(mask, selected_classes) * mask
+ return filtered_mask
+
+class slice_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+ file_list = []
+ for line in open(data_file):
+ name = line.strip().split()[1].split('.nii.gz')[0]
+ name = name.split('/')[-1]
+ file_list.append(name)
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # breakpoint()
+ # pos_id = np.random.randint(0, data_npz.shape[0])
+ # pos_id = data_npz.shape[0]//2
+ pos_id_list = np.where(np.any(data_npz==2, axis=(1, 2)))[0]
+ pos_id = pos_id_list[len(pos_id_list)//2]
+ # breakpoint()
+ slice_data = data_npz[pos_id]
+ slice_seg = seg_npz[pos_id]
+
+ slice_data[slice_data <= -175] = -175
+ slice_data[slice_data >= 250] = 250
+ slice_data = (slice_data+175)/425.0
+
+ slice_seg[slice_seg==1] = 5
+ slice_seg[slice_seg==2] = 26
+
+ # tumor_mask = (slice_seg==2).astype(np.float32)
+ slice_seg = slice_seg.astype(np.float32)
+ foreground_mask = (slice_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*slice_data
+
+ slice_data = slice_data[:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,None].astype(np.float32)
+
+ # tumor_mask = resize(tumor_mask, (64,64), order=0)
+ slice_seg = cv2.resize(slice_seg,(64,64),interpolation=cv2.INTER_NEAREST)
+ slice_seg = slice_seg[:,:,None].astype(np.float32)
+ # print(np.unique(slice_seg))
+ # breakpoint()
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['slice_data'] = slice_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = slice_seg
+ # breakpoint()
+ return example
+
+class slice_train(slice_base):
+ def __init__(self, data_file='data_split/liver/train.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+
+class slice_val(slice_base):
+ def __init__(self, data_file='data_split/liver/eval.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class slice_test(slice_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset copy.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset copy.py
new file mode 100644
index 0000000000000000000000000000000000000000..9c011677e051b1ea7ac4c555c456c1bd979232fa
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset copy.py
@@ -0,0 +1,83 @@
+import os
+import numpy as np
+from skimage.transform import resize
+from torch.utils.data import Dataset
+
+
+class volume_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ sample=True,
+ sample_length=16,
+ data_repeat=1
+ ):
+
+ self.data_root = data_root
+ self.data_name = data_name
+ self.sample = sample
+ self.sample_length = sample_length
+
+ data_root = os.path.join(data_root, data_name + '/nnUNetPlans_3d_fullres')
+ self.list = [os.path.join(data_name + '/nnUNetPlans_3d_fullres',f) for f in os.listdir(data_root) if f.endswith('.npz')]
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data']
+ seg_npz = np.load(npz_file)['seg']
+
+ volume_data = data_npz[0, :, :, :]
+ volume_seg = seg_npz[0, :, :, :]
+
+ volume_data = (volume_data - np.min(data_npz)) / (np.max(data_npz)-np.min(data_npz))
+ if 'Abdomen' in self.data_name:
+ max_seg = 4
+ elif 'Brain' in self.data_name:
+ max_seg = 3
+ volume_seg = volume_seg / max_seg
+
+ volume_data = resize(volume_data, (volume_data.shape[0],512,512))
+ volume_seg = resize(volume_seg, (volume_seg.shape[0],512,512), order=0, anti_aliasing=False)
+
+ volume_data = volume_data[:, :, :, None].astype(np.float32)
+ volume_seg = volume_seg[:, :, :, None].astype(np.float32)
+
+ if self.sample:
+ start_id = np.random.randint(0, data_npz.shape[1]-self.sample_length)
+ volume_data = volume_data[start_id:start_id+self.sample_length]
+ volume_seg = volume_seg[start_id:start_id+self.sample_length]
+
+ rand_idx = np.random.randint(0, volume_data.shape[0])
+ volume_ref = volume_data[rand_idx:rand_idx+1]
+
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ example['volume_data'] = volume_data * 2 - 1
+ example['volume_seg'] = volume_seg * 2 - 1
+ example['volume_ref'] = volume_ref * 2 - 1
+
+ return example
+
+class volume_train(volume_base):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+
+class volume_val(volume_base):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ def __len__(self):
+ return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class volume_test(volume_base):
+ def __init__(self, **kwargs):
+ super().__init__(sample=False, **kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..e9362a689c518d4716dbbdae17c6b18f06e7b2d6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset.py
@@ -0,0 +1,98 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+from batchgenerators.utilities.file_and_folder_operations import join, load_json, isfile, save_json, maybe_mkdir_p
+
+class volume_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1,
+ planner='nnUNetPlans_3d_fullres',
+ phase='train',
+ ):
+
+ self.data_root = data_root
+ # planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+ file_list = []
+ if 'liver' in data_file:
+ for line in open(data_file):
+ name = line.strip().split()[1].split('.nii.gz')[0]
+ name = name.split('/')[-1]
+ file_list.append(name)
+ else:
+ file_list = load_json(data_file)[0][phase]
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self.sample_length=16
+ self.sample=True
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+
+ # breakpoint()
+
+ if self.sample:
+ start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length)
+ volume_data = data_npz[start_id:start_id+self.sample_length]
+ volume_seg = seg_npz[start_id:start_id+self.sample_length]
+
+ volume_data[volume_data <= -175] = -175
+ volume_data[volume_data >= 250] = 250
+ volume_data = (volume_data+175)/425.0
+
+
+ volume_seg = volume_seg.astype(np.float32)
+ foreground_mask = (volume_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*volume_data
+
+ volume_data = volume_data[:,:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,:,None].astype(np.float32)
+
+ # breakpoint()
+ volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)
+ # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)))
+ volume_seg = volume_seg[:,:,:,None].astype(np.float32)
+
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['volume_data'] = volume_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = volume_seg
+ # breakpoint()
+ return example
+
+class volume_train(volume_base):
+ def __init__(self, phase='train', **kwargs):
+ super().__init__(phase=phase, **kwargs)
+
+
+class volume_val(volume_base):
+ def __init__(self, phase='val', **kwargs):
+ super().__init__(phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class volume_test(volume_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_13class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_13class_randomclass.py
new file mode 100644
index 0000000000000000000000000000000000000000..12c02a0588538a0a4376761ef44f9d6c059329fa
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_13class_randomclass.py
@@ -0,0 +1,122 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+import random
+import itertools
+from batchgenerators.utilities.file_and_folder_operations import load_json
+
+def get_random_classes_from_mask(mask):
+ # 分析 mask 中有哪些类别
+ unique_classes = np.unique(mask)
+ unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0)
+
+ # 获取所有可能的类别组合
+ all_combinations = []
+ for i in range(1, len(unique_classes) + 1):
+ all_combinations.extend(itertools.combinations(unique_classes, i))
+
+ # 随机选择一个组合
+ selected_combination = random.choice(all_combinations)
+ return selected_combination
+
+def get_filtered_mask(mask, selected_classes):
+ # 创建只包含选定类别的 mask
+ filtered_mask = np.isin(mask, selected_classes) * mask
+ return filtered_mask
+
+class volume_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1,
+ phase='train'
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetPlans_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+
+ data_splits = load_json(data_file)
+ file_list = data_splits[0][phase]
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self.class_num = 13
+
+ self.sample_length=16
+ self.sample=True
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+
+ # breakpoint()
+
+ if self.sample:
+ start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length)
+ volume_data = data_npz[start_id:start_id+self.sample_length]
+ volume_seg = seg_npz[start_id:start_id+self.sample_length]
+
+ # breakpoint()
+
+
+ volume_data[volume_data <= -175] = -175
+ volume_data[volume_data >= 250] = 250
+ volume_data = (volume_data+175)/425.0
+
+ if len(np.unique(volume_seg)) > 1:
+ selected_classes = get_random_classes_from_mask(volume_seg)
+ volume_seg = get_filtered_mask(volume_seg, selected_classes)
+
+
+ volume_seg = volume_seg.astype(np.float32)
+ foreground_mask = (volume_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*volume_data
+
+ volume_data = volume_data[:,:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,:,None].astype(np.float32)
+
+ # breakpoint()
+ volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)
+ # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)))
+ volume_seg = volume_seg[:,:,:,None].astype(np.float32)
+
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['volume_data'] = volume_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = volume_seg
+ # breakpoint()
+ return example
+
+class volume_train(volume_base):
+ def __init__(self, phase='train', **kwargs):
+ super().__init__( phase=phase, **kwargs)
+
+
+class volume_val(volume_base):
+ def __init__(self, phase='val', **kwargs):
+ super().__init__(phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class volume_test(volume_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_28class_randomclass.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_28class_randomclass.py
new file mode 100644
index 0000000000000000000000000000000000000000..16224ea7b6d4d164626aa478f51788dbdcf32210
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_28class_randomclass.py
@@ -0,0 +1,122 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+import random
+import itertools
+from batchgenerators.utilities.file_and_folder_operations import load_json
+
+def get_random_classes_from_mask(mask):
+ # 分析 mask 中有哪些类别
+ unique_classes = np.unique(mask)
+ unique_classes = unique_classes[unique_classes != 0] # 去除背景类(假设背景类为0)
+
+ # 获取所有可能的类别组合
+ all_combinations = []
+ for i in range(1, len(unique_classes) + 1):
+ all_combinations.extend(itertools.combinations(unique_classes, i))
+
+ # 随机选择一个组合
+ selected_combination = random.choice(all_combinations)
+ return selected_combination
+
+def get_filtered_mask(mask, selected_classes):
+ # 创建只包含选定类别的 mask
+ filtered_mask = np.isin(mask, selected_classes) * mask
+ return filtered_mask
+
+class volume_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1,
+ phase='train'
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+
+ data_splits = load_json(data_file)
+ file_list = data_splits[0][phase]
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self.class_num = 28
+
+ self.sample_length=16
+ self.sample=True
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+
+ # breakpoint()
+
+ if self.sample:
+ start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length)
+ volume_data = data_npz[start_id:start_id+self.sample_length]
+ volume_seg = seg_npz[start_id:start_id+self.sample_length]
+
+ # breakpoint()
+
+
+ volume_data[volume_data <= -175] = -175
+ volume_data[volume_data >= 250] = 250
+ volume_data = (volume_data+175)/425.0
+
+ if len(np.unique(volume_seg)) > 1:
+ selected_classes = get_random_classes_from_mask(volume_seg)
+ volume_seg = get_filtered_mask(volume_seg, selected_classes)
+
+
+ volume_seg = volume_seg.astype(np.float32)
+ foreground_mask = (volume_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*volume_data
+
+ volume_data = volume_data[:,:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,:,None].astype(np.float32)
+
+ # breakpoint()
+ volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)
+ # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)))
+ volume_seg = volume_seg[:,:,:,None].astype(np.float32)
+
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['volume_data'] = volume_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = volume_seg
+ # breakpoint()
+ return example
+
+class volume_train(volume_base):
+ def __init__(self, data_file='data_split/splits_final2.json', phase='train', **kwargs):
+ super().__init__(data_file=data_file, phase=phase, **kwargs)
+
+
+class volume_val(volume_base):
+ def __init__(self, data_file='data_split/splits_final2.json', phase='val', **kwargs):
+ super().__init__(data_file=data_file, phase=phase, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class volume_test(volume_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_base.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_base.py
new file mode 100644
index 0000000000000000000000000000000000000000..fb62286c96eea7e2b0cda0d0ab58197dbae2263e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_base.py
@@ -0,0 +1,79 @@
+import os
+import numpy as np
+from skimage.transform import resize
+from torch.utils.data import Dataset
+
+
+class volume_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ sample=True,
+ sample_length=16,
+ data_repeat=1
+ ):
+
+ self.data_root = data_root
+ self.data_name = data_name
+ self.sample = sample
+ self.sample_length = sample_length
+
+ data_root = os.path.join(data_root, data_name + '/nnUNetPlans_3d_fullres')
+ self.list = [os.path.join(data_name + '/nnUNetPlans_3d_fullres',f) for f in os.listdir(data_root) if f.endswith('.npz')]
+ self._length = len(self.list)
+ self._data_repeat = data_repeat
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data']
+ seg_npz = np.load(npz_file)['seg']
+
+ volume_data = data_npz[0, :, :, :]
+ volume_seg = seg_npz[0, :, :, :]
+
+ volume_data = (volume_data - np.min(data_npz)) / (np.max(data_npz)-np.min(data_npz))
+ if 'Abdomen' in self.data_name:
+ max_seg = 4
+ elif 'Brain' in self.data_name:
+ max_seg = 3
+ volume_seg = volume_seg / max_seg
+
+ volume_data = resize(volume_data, (volume_data.shape[0],512,512))
+ volume_seg = resize(volume_seg, (volume_seg.shape[0],512,512), order=0, anti_aliasing=False)
+
+ volume_data = volume_data[:, :, :, None].astype(np.float32)
+ volume_seg = volume_seg[:, :, :, None].astype(np.float32)
+
+ if self.sample:
+ start_id = np.random.randint(0, data_npz.shape[1]-self.sample_length)
+ volume_data = volume_data[start_id:start_id+self.sample_length]
+ volume_seg = volume_seg[start_id:start_id+self.sample_length]
+
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ example['volume_data'] = volume_data * 2 - 1
+ example['volume_seg'] = volume_seg * 2 - 1
+
+ return example
+
+class volume_train(volume_base):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+
+class volume_val(volume_base):
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ def __len__(self):
+ return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class volume_test(volume_base):
+ def __init__(self, **kwargs):
+ super().__init__(sample=False, **kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_infer.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_infer.py
new file mode 100644
index 0000000000000000000000000000000000000000..162569c1ce5d07b9d918ac4c15a0b12949188e7b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/data/volume_dataset_infer.py
@@ -0,0 +1,96 @@
+import os
+import numpy as np
+from skimage.transform import resize
+import cv2
+from torch.utils.data import Dataset
+import copy
+
+class volume_base(Dataset):
+ def __init__(self,
+ data_root,
+ data_name,
+ data_file,
+ data_repeat=1
+ ):
+
+ self.data_root = data_root
+ planner = 'nnUNetResEncUNetLPlans_torchres_3d_fullres' # nnUNetResEncUNetLPlans_torchres_3d_fullres nnUNetPlans_3d_fullres
+ data_root = os.path.join(data_root, data_name , planner)
+ # self.list = [os.path.join(data_name, planner ,f) for f in os.listdir(data_root) if f.endswith('.npz')]
+ file_list = []
+ for line in open(data_file):
+ name = line.strip().split()[1].split('.nii.gz')[0]
+ name = name.split('/')[-1]
+ file_list.append(name)
+ # breakpoint()
+ self.list = [os.path.join(data_name, planner , i+'.npz') for i in file_list]
+
+ self._length = len(self.list)
+ self.sample_length=16
+ self.sample=False
+ self._data_repeat = data_repeat
+
+
+ def __len__(self):
+ return self._length * self._data_repeat
+
+ def __getitem__(self, i):
+ i = i % self._length
+
+ npz_file = os.path.join(self.data_root, self.list[i])
+ data_npz = np.load(npz_file)['data'][0] # np.load(npz_file)['seg']
+ seg_npz = np.load(npz_file)['seg'][0]
+ # breakpoint()
+
+ if self.sample:
+ start_id = np.random.randint(0, data_npz.shape[0]-self.sample_length)
+ volume_data = data_npz[start_id:start_id+self.sample_length]
+ volume_seg = seg_npz[start_id:start_id+self.sample_length]
+ else:
+ volume_data=data_npz
+ volume_seg = seg_npz
+ # breakpoint()
+
+
+ volume_data[volume_data <= -175] = -175
+ volume_data[volume_data >= 250] = 250
+ volume_data = (volume_data+175)/425.0
+
+
+ volume_seg = volume_seg.astype(np.float32)
+ foreground_mask = (volume_seg>0).astype(np.float32)
+ masked_data = (1-foreground_mask)*volume_data
+
+ volume_data = volume_data[:,:,:,None].astype(np.float32)
+ masked_data = masked_data[:,:,:,None].astype(np.float32)
+
+ # breakpoint()
+ volume_seg = resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)
+ # print(np.unique(resize(volume_seg, (volume_seg.shape[0],64,64), order=0, anti_aliasing=False)))
+ volume_seg = volume_seg[:,:,:,None].astype(np.float32)
+
+ example = {}
+ example['name'] = self.list[i].split('/')[-1].split('.')[0]
+ # example['pos_id'] = pos_id
+ example['volume_data'] = volume_data * 2 - 1
+ example['masked_data'] = masked_data * 2 - 1
+ example['tumor_mask'] = volume_seg
+ # breakpoint()
+ return example
+
+class volume_train(volume_base):
+ def __init__(self, data_file='data_split/liver/train.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+
+class volume_val(volume_base):
+ def __init__(self, data_file='data_split/liver/eval.txt', **kwargs):
+ super().__init__(data_file=data_file, **kwargs)
+
+ # def __len__(self):
+ # return 2 if super().__len__() // 10000 < 2 else super().__len__() // 10000
+
+class volume_test(volume_base):
+ def __init__(self, data_file='data_splits/test.txt', **kwargs):
+ super().__init__(**kwargs)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/lr_scheduler.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/lr_scheduler.py
new file mode 100644
index 0000000000000000000000000000000000000000..be39da9ca6dacc22bf3df9c7389bbb403a4a3ade
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/lr_scheduler.py
@@ -0,0 +1,98 @@
+import numpy as np
+
+
+class LambdaWarmUpCosineScheduler:
+ """
+ note: use with a base_lr of 1.0
+ """
+ def __init__(self, warm_up_steps, lr_min, lr_max, lr_start, max_decay_steps, verbosity_interval=0):
+ self.lr_warm_up_steps = warm_up_steps
+ self.lr_start = lr_start
+ self.lr_min = lr_min
+ self.lr_max = lr_max
+ self.lr_max_decay_steps = max_decay_steps
+ self.last_lr = 0.
+ self.verbosity_interval = verbosity_interval
+
+ def schedule(self, n, **kwargs):
+ if self.verbosity_interval > 0:
+ if n % self.verbosity_interval == 0: print(f"current step: {n}, recent lr-multiplier: {self.last_lr}")
+ if n < self.lr_warm_up_steps:
+ lr = (self.lr_max - self.lr_start) / self.lr_warm_up_steps * n + self.lr_start
+ self.last_lr = lr
+ return lr
+ else:
+ t = (n - self.lr_warm_up_steps) / (self.lr_max_decay_steps - self.lr_warm_up_steps)
+ t = min(t, 1.0)
+ lr = self.lr_min + 0.5 * (self.lr_max - self.lr_min) * (
+ 1 + np.cos(t * np.pi))
+ self.last_lr = lr
+ return lr
+
+ def __call__(self, n, **kwargs):
+ return self.schedule(n,**kwargs)
+
+
+class LambdaWarmUpCosineScheduler2:
+ """
+ supports repeated iterations, configurable via lists
+ note: use with a base_lr of 1.0.
+ """
+ def __init__(self, warm_up_steps, f_min, f_max, f_start, cycle_lengths, verbosity_interval=0):
+ assert len(warm_up_steps) == len(f_min) == len(f_max) == len(f_start) == len(cycle_lengths)
+ self.lr_warm_up_steps = warm_up_steps
+ self.f_start = f_start
+ self.f_min = f_min
+ self.f_max = f_max
+ self.cycle_lengths = cycle_lengths
+ self.cum_cycles = np.cumsum([0] + list(self.cycle_lengths))
+ self.last_f = 0.
+ self.verbosity_interval = verbosity_interval
+
+ def find_in_interval(self, n):
+ interval = 0
+ for cl in self.cum_cycles[1:]:
+ if n <= cl:
+ return interval
+ interval += 1
+
+ def schedule(self, n, **kwargs):
+ cycle = self.find_in_interval(n)
+ n = n - self.cum_cycles[cycle]
+ if self.verbosity_interval > 0:
+ if n % self.verbosity_interval == 0: print(f"current step: {n}, recent lr-multiplier: {self.last_f}, "
+ f"current cycle {cycle}")
+ if n < self.lr_warm_up_steps[cycle]:
+ f = (self.f_max[cycle] - self.f_start[cycle]) / self.lr_warm_up_steps[cycle] * n + self.f_start[cycle]
+ self.last_f = f
+ return f
+ else:
+ t = (n - self.lr_warm_up_steps[cycle]) / (self.cycle_lengths[cycle] - self.lr_warm_up_steps[cycle])
+ t = min(t, 1.0)
+ f = self.f_min[cycle] + 0.5 * (self.f_max[cycle] - self.f_min[cycle]) * (
+ 1 + np.cos(t * np.pi))
+ self.last_f = f
+ return f
+
+ def __call__(self, n, **kwargs):
+ return self.schedule(n, **kwargs)
+
+
+class LambdaLinearScheduler(LambdaWarmUpCosineScheduler2):
+
+ def schedule(self, n, **kwargs):
+ cycle = self.find_in_interval(n)
+ n = n - self.cum_cycles[cycle]
+ if self.verbosity_interval > 0:
+ if n % self.verbosity_interval == 0: print(f"current step: {n}, recent lr-multiplier: {self.last_f}, "
+ f"current cycle {cycle}")
+
+ if n < self.lr_warm_up_steps[cycle]:
+ f = (self.f_max[cycle] - self.f_start[cycle]) / self.lr_warm_up_steps[cycle] * n + self.f_start[cycle]
+ self.last_f = f
+ return f
+ else:
+ f = self.f_min[cycle] + (self.f_max[cycle] - self.f_min[cycle]) * (self.cycle_lengths[cycle] - n) / (self.cycle_lengths[cycle])
+ self.last_f = f
+ return f
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..41ffd02260fe635ecbea56fff1513e94b1668afb
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2035524d62afa1bdef50c6b75e0965bcb822617f
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d84b58ad9835b249e19129ffe50be21843d6e494
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d0f1eacb84946c54a671166a60fb0cac7bcc9dec
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/__pycache__/autoencoder.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..d122549995ce2cd64092c81a58419ed4a15a02fd
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder.py
@@ -0,0 +1,219 @@
+import torch
+import pytorch_lightning as pl
+import torch.nn.functional as F
+from contextlib import contextmanager
+
+from ldm.modules.diffusionmodules.model import Encoder, Decoder
+from ldm.modules.distributions.distributions import DiagonalGaussianDistribution
+
+from ldm.util import instantiate_from_config
+from ldm.modules.ema import LitEma
+
+
+class AutoencoderKL(pl.LightningModule):
+ def __init__(self,
+ ddconfig,
+ lossconfig,
+ embed_dim,
+ ckpt_path=None,
+ ignore_keys=[],
+ image_key="image",
+ colorize_nlabels=None,
+ monitor=None,
+ ema_decay=None,
+ learn_logvar=False
+ ):
+ super().__init__()
+ self.learn_logvar = learn_logvar
+ self.image_key = image_key
+ self.encoder = Encoder(**ddconfig)
+ self.decoder = Decoder(**ddconfig)
+ self.loss = instantiate_from_config(lossconfig)
+ assert ddconfig["double_z"]
+ self.quant_conv = torch.nn.Conv2d(2*ddconfig["z_channels"], 2*embed_dim, 1)
+ self.post_quant_conv = torch.nn.Conv2d(embed_dim, ddconfig["z_channels"], 1)
+ self.embed_dim = embed_dim
+ if colorize_nlabels is not None:
+ assert type(colorize_nlabels)==int
+ self.register_buffer("colorize", torch.randn(3, colorize_nlabels, 1, 1))
+ if monitor is not None:
+ self.monitor = monitor
+
+ self.use_ema = ema_decay is not None
+ if self.use_ema:
+ self.ema_decay = ema_decay
+ assert 0. < ema_decay < 1.
+ self.model_ema = LitEma(self, decay=ema_decay)
+ print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.")
+
+ if ckpt_path is not None:
+ self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys)
+
+ def init_from_ckpt(self, path, ignore_keys=list()):
+ sd = torch.load(path, map_location="cpu")["state_dict"]
+ keys = list(sd.keys())
+ for k in keys:
+ for ik in ignore_keys:
+ if k.startswith(ik):
+ print("Deleting key {} from state_dict.".format(k))
+ del sd[k]
+ self.load_state_dict(sd, strict=False)
+ print(f"Restored from {path}")
+
+ @contextmanager
+ def ema_scope(self, context=None):
+ if self.use_ema:
+ self.model_ema.store(self.parameters())
+ self.model_ema.copy_to(self)
+ if context is not None:
+ print(f"{context}: Switched to EMA weights")
+ try:
+ yield None
+ finally:
+ if self.use_ema:
+ self.model_ema.restore(self.parameters())
+ if context is not None:
+ print(f"{context}: Restored training weights")
+
+ def on_train_batch_end(self, *args, **kwargs):
+ if self.use_ema:
+ self.model_ema(self)
+
+ def encode(self, x):
+ h = self.encoder(x)
+ moments = self.quant_conv(h)
+ posterior = DiagonalGaussianDistribution(moments)
+ return posterior
+
+ def decode(self, z):
+ z = self.post_quant_conv(z)
+ dec = self.decoder(z)
+ return dec
+
+ def forward(self, input, sample_posterior=True):
+ posterior = self.encode(input)
+ if sample_posterior:
+ z = posterior.sample()
+ else:
+ z = posterior.mode()
+ dec = self.decode(z)
+ return dec, posterior
+
+ def get_input(self, batch, k):
+ x = batch[k]
+ if len(x.shape) == 3:
+ x = x[..., None]
+ x = x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format).float()
+ return x
+
+ def training_step(self, batch, batch_idx, optimizer_idx):
+ inputs = self.get_input(batch, self.image_key)
+ reconstructions, posterior = self(inputs)
+
+ if optimizer_idx == 0:
+ # train encoder+decoder+logvar
+ aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step,
+ last_layer=self.get_last_layer(), split="train")
+ self.log("aeloss", aeloss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log_dict(log_dict_ae, prog_bar=False, logger=True, on_step=True, on_epoch=False)
+ return aeloss
+
+ if optimizer_idx == 1:
+ # train the discriminator
+ discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step,
+ last_layer=self.get_last_layer(), split="train")
+
+ self.log("discloss", discloss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log_dict(log_dict_disc, prog_bar=False, logger=True, on_step=True, on_epoch=False)
+ return discloss
+
+ def validation_step(self, batch, batch_idx):
+ log_dict = self._validation_step(batch, batch_idx)
+ with self.ema_scope():
+ log_dict_ema = self._validation_step(batch, batch_idx, postfix="_ema")
+ return log_dict
+
+ def _validation_step(self, batch, batch_idx, postfix=""):
+ inputs = self.get_input(batch, self.image_key)
+ reconstructions, posterior = self(inputs)
+ aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, 0, self.global_step,
+ last_layer=self.get_last_layer(), split="val"+postfix)
+
+ discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, 1, self.global_step,
+ last_layer=self.get_last_layer(), split="val"+postfix)
+
+ self.log(f"val{postfix}/rec_loss", log_dict_ae[f"val{postfix}/rec_loss"])
+ self.log_dict(log_dict_ae)
+ self.log_dict(log_dict_disc)
+ return self.log_dict
+
+ def configure_optimizers(self):
+ lr = self.learning_rate
+ ae_params_list = list(self.encoder.parameters()) + list(self.decoder.parameters()) + list(
+ self.quant_conv.parameters()) + list(self.post_quant_conv.parameters())
+ if self.learn_logvar:
+ print(f"{self.__class__.__name__}: Learning logvar")
+ ae_params_list.append(self.loss.logvar)
+ opt_ae = torch.optim.Adam(ae_params_list,
+ lr=lr, betas=(0.5, 0.9))
+ opt_disc = torch.optim.Adam(self.loss.discriminator.parameters(),
+ lr=lr, betas=(0.5, 0.9))
+ return [opt_ae, opt_disc], []
+
+ def get_last_layer(self):
+ return self.decoder.conv_out.weight
+
+ @torch.no_grad()
+ def log_images(self, batch, only_inputs=False, log_ema=False, **kwargs):
+ log = dict()
+ x = self.get_input(batch, self.image_key)
+ x = x.to(self.device)
+ if not only_inputs:
+ xrec, posterior = self(x)
+ if x.shape[1] > 3:
+ # colorize with random projection
+ assert xrec.shape[1] > 3
+ x = self.to_rgb(x)
+ xrec = self.to_rgb(xrec)
+ log["samples"] = self.decode(torch.randn_like(posterior.sample()))
+ log["reconstructions"] = xrec
+ if log_ema or self.use_ema:
+ with self.ema_scope():
+ xrec_ema, posterior_ema = self(x)
+ if x.shape[1] > 3:
+ # colorize with random projection
+ assert xrec_ema.shape[1] > 3
+ xrec_ema = self.to_rgb(xrec_ema)
+ log["samples_ema"] = self.decode(torch.randn_like(posterior_ema.sample()))
+ log["reconstructions_ema"] = xrec_ema
+ log["inputs"] = x
+ return log
+
+ def to_rgb(self, x):
+ assert self.image_key == "segmentation"
+ if not hasattr(self, "colorize"):
+ self.register_buffer("colorize", torch.randn(3, x.shape[1], 1, 1).to(x))
+ x = F.conv2d(x, weight=self.colorize)
+ x = 2.*(x-x.min())/(x.max()-x.min()) - 1.
+ return x
+
+
+class IdentityFirstStage(torch.nn.Module):
+ def __init__(self, *args, vq_interface=False, **kwargs):
+ self.vq_interface = vq_interface
+ super().__init__()
+
+ def encode(self, x, *args, **kwargs):
+ return x
+
+ def decode(self, x, *args, **kwargs):
+ return x
+
+ def quantize(self, x, *args, **kwargs):
+ if self.vq_interface:
+ return x, None, [None, None, None]
+ return x
+
+ def forward(self, x, *args, **kwargs):
+ return x
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder__.py
new file mode 100644
index 0000000000000000000000000000000000000000..6a9c4f45498561953b8085981609b2a3298a5473
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/autoencoder__.py
@@ -0,0 +1,443 @@
+import torch
+import pytorch_lightning as pl
+import torch.nn.functional as F
+from contextlib import contextmanager
+
+from taming.modules.vqvae.quantize import VectorQuantizer2 as VectorQuantizer
+
+from ldm.modules.diffusionmodules.model import Encoder, Decoder
+from ldm.modules.distributions.distributions import DiagonalGaussianDistribution
+
+from ldm.util import instantiate_from_config
+
+
+class VQModel(pl.LightningModule):
+ def __init__(self,
+ ddconfig,
+ lossconfig,
+ n_embed,
+ embed_dim,
+ ckpt_path=None,
+ ignore_keys=[],
+ image_key="image",
+ colorize_nlabels=None,
+ monitor=None,
+ batch_resize_range=None,
+ scheduler_config=None,
+ lr_g_factor=1.0,
+ remap=None,
+ sane_index_shape=False, # tell vector quantizer to return indices as bhw
+ use_ema=False
+ ):
+ super().__init__()
+ self.embed_dim = embed_dim
+ self.n_embed = n_embed
+ self.image_key = image_key
+ self.encoder = Encoder(**ddconfig)
+ self.decoder = Decoder(**ddconfig)
+ self.loss = instantiate_from_config(lossconfig)
+ self.quantize = VectorQuantizer(n_embed, embed_dim, beta=0.25,
+ remap=remap,
+ sane_index_shape=sane_index_shape)
+ self.quant_conv = torch.nn.Conv2d(ddconfig["z_channels"], embed_dim, 1)
+ self.post_quant_conv = torch.nn.Conv2d(embed_dim, ddconfig["z_channels"], 1)
+ if colorize_nlabels is not None:
+ assert type(colorize_nlabels)==int
+ self.register_buffer("colorize", torch.randn(3, colorize_nlabels, 1, 1))
+ if monitor is not None:
+ self.monitor = monitor
+ self.batch_resize_range = batch_resize_range
+ if self.batch_resize_range is not None:
+ print(f"{self.__class__.__name__}: Using per-batch resizing in range {batch_resize_range}.")
+
+ self.use_ema = use_ema
+ if self.use_ema:
+ self.model_ema = LitEma(self)
+ print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.")
+
+ if ckpt_path is not None:
+ self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys)
+ self.scheduler_config = scheduler_config
+ self.lr_g_factor = lr_g_factor
+
+ @contextmanager
+ def ema_scope(self, context=None):
+ if self.use_ema:
+ self.model_ema.store(self.parameters())
+ self.model_ema.copy_to(self)
+ if context is not None:
+ print(f"{context}: Switched to EMA weights")
+ try:
+ yield None
+ finally:
+ if self.use_ema:
+ self.model_ema.restore(self.parameters())
+ if context is not None:
+ print(f"{context}: Restored training weights")
+
+ def init_from_ckpt(self, path, ignore_keys=list()):
+ sd = torch.load(path, map_location="cpu")["state_dict"]
+ keys = list(sd.keys())
+ for k in keys:
+ for ik in ignore_keys:
+ if k.startswith(ik):
+ print("Deleting key {} from state_dict.".format(k))
+ del sd[k]
+ missing, unexpected = self.load_state_dict(sd, strict=False)
+ print(f"Restored from {path} with {len(missing)} missing and {len(unexpected)} unexpected keys")
+ if len(missing) > 0:
+ print(f"Missing Keys: {missing}")
+ print(f"Unexpected Keys: {unexpected}")
+
+ def on_train_batch_end(self, *args, **kwargs):
+ if self.use_ema:
+ self.model_ema(self)
+
+ def encode(self, x):
+ h = self.encoder(x)
+ h = self.quant_conv(h)
+ quant, emb_loss, info = self.quantize(h)
+ return quant, emb_loss, info
+
+ def encode_to_prequant(self, x):
+ h = self.encoder(x)
+ h = self.quant_conv(h)
+ return h
+
+ def decode(self, quant):
+ quant = self.post_quant_conv(quant)
+ dec = self.decoder(quant)
+ return dec
+
+ def decode_code(self, code_b):
+ quant_b = self.quantize.embed_code(code_b)
+ dec = self.decode(quant_b)
+ return dec
+
+ def forward(self, input, return_pred_indices=False):
+ quant, diff, (_,_,ind) = self.encode(input)
+ dec = self.decode(quant)
+ if return_pred_indices:
+ return dec, diff, ind
+ return dec, diff
+
+ def get_input(self, batch, k):
+ x = batch[k]
+ if len(x.shape) == 3:
+ x = x[..., None]
+ x = x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format).float()
+ if self.batch_resize_range is not None:
+ lower_size = self.batch_resize_range[0]
+ upper_size = self.batch_resize_range[1]
+ if self.global_step <= 4:
+ # do the first few batches with max size to avoid later oom
+ new_resize = upper_size
+ else:
+ new_resize = np.random.choice(np.arange(lower_size, upper_size+16, 16))
+ if new_resize != x.shape[2]:
+ x = F.interpolate(x, size=new_resize, mode="bicubic")
+ x = x.detach()
+ return x
+
+ def training_step(self, batch, batch_idx, optimizer_idx):
+ # https://github.com/pytorch/pytorch/issues/37142
+ # try not to fool the heuristics
+ x = self.get_input(batch, self.image_key)
+ xrec, qloss, ind = self(x, return_pred_indices=True)
+
+ if optimizer_idx == 0:
+ # autoencode
+ aeloss, log_dict_ae = self.loss(qloss, x, xrec, optimizer_idx, self.global_step,
+ last_layer=self.get_last_layer(), split="train",
+ predicted_indices=ind)
+
+ self.log_dict(log_dict_ae, prog_bar=False, logger=True, on_step=True, on_epoch=True)
+ return aeloss
+
+ if optimizer_idx == 1:
+ # discriminator
+ discloss, log_dict_disc = self.loss(qloss, x, xrec, optimizer_idx, self.global_step,
+ last_layer=self.get_last_layer(), split="train")
+ self.log_dict(log_dict_disc, prog_bar=False, logger=True, on_step=True, on_epoch=True)
+ return discloss
+
+ def validation_step(self, batch, batch_idx):
+ log_dict = self._validation_step(batch, batch_idx)
+ with self.ema_scope():
+ log_dict_ema = self._validation_step(batch, batch_idx, suffix="_ema")
+ return log_dict
+
+ def _validation_step(self, batch, batch_idx, suffix=""):
+ x = self.get_input(batch, self.image_key)
+ xrec, qloss, ind = self(x, return_pred_indices=True)
+ aeloss, log_dict_ae = self.loss(qloss, x, xrec, 0,
+ self.global_step,
+ last_layer=self.get_last_layer(),
+ split="val"+suffix,
+ predicted_indices=ind
+ )
+
+ discloss, log_dict_disc = self.loss(qloss, x, xrec, 1,
+ self.global_step,
+ last_layer=self.get_last_layer(),
+ split="val"+suffix,
+ predicted_indices=ind
+ )
+ rec_loss = log_dict_ae[f"val{suffix}/rec_loss"]
+ self.log(f"val{suffix}/rec_loss", rec_loss,
+ prog_bar=True, logger=True, on_step=False, on_epoch=True, sync_dist=True)
+ self.log(f"val{suffix}/aeloss", aeloss,
+ prog_bar=True, logger=True, on_step=False, on_epoch=True, sync_dist=True)
+ if version.parse(pl.__version__) >= version.parse('1.4.0'):
+ del log_dict_ae[f"val{suffix}/rec_loss"]
+ self.log_dict(log_dict_ae)
+ self.log_dict(log_dict_disc)
+ return self.log_dict
+
+ def configure_optimizers(self):
+ lr_d = self.learning_rate
+ lr_g = self.lr_g_factor*self.learning_rate
+ print("lr_d", lr_d)
+ print("lr_g", lr_g)
+ opt_ae = torch.optim.Adam(list(self.encoder.parameters())+
+ list(self.decoder.parameters())+
+ list(self.quantize.parameters())+
+ list(self.quant_conv.parameters())+
+ list(self.post_quant_conv.parameters()),
+ lr=lr_g, betas=(0.5, 0.9))
+ opt_disc = torch.optim.Adam(self.loss.discriminator.parameters(),
+ lr=lr_d, betas=(0.5, 0.9))
+
+ if self.scheduler_config is not None:
+ scheduler = instantiate_from_config(self.scheduler_config)
+
+ print("Setting up LambdaLR scheduler...")
+ scheduler = [
+ {
+ 'scheduler': LambdaLR(opt_ae, lr_lambda=scheduler.schedule),
+ 'interval': 'step',
+ 'frequency': 1
+ },
+ {
+ 'scheduler': LambdaLR(opt_disc, lr_lambda=scheduler.schedule),
+ 'interval': 'step',
+ 'frequency': 1
+ },
+ ]
+ return [opt_ae, opt_disc], scheduler
+ return [opt_ae, opt_disc], []
+
+ def get_last_layer(self):
+ return self.decoder.conv_out.weight
+
+ def log_images(self, batch, only_inputs=False, plot_ema=False, **kwargs):
+ log = dict()
+ x = self.get_input(batch, self.image_key)
+ x = x.to(self.device)
+ if only_inputs:
+ log["inputs"] = x
+ return log
+ xrec, _ = self(x)
+ if x.shape[1] > 3:
+ # colorize with random projection
+ assert xrec.shape[1] > 3
+ x = self.to_rgb(x)
+ xrec = self.to_rgb(xrec)
+ log["inputs"] = x
+ log["reconstructions"] = xrec
+ if plot_ema:
+ with self.ema_scope():
+ xrec_ema, _ = self(x)
+ if x.shape[1] > 3: xrec_ema = self.to_rgb(xrec_ema)
+ log["reconstructions_ema"] = xrec_ema
+ return log
+
+ def to_rgb(self, x):
+ assert self.image_key == "segmentation"
+ if not hasattr(self, "colorize"):
+ self.register_buffer("colorize", torch.randn(3, x.shape[1], 1, 1).to(x))
+ x = F.conv2d(x, weight=self.colorize)
+ x = 2.*(x-x.min())/(x.max()-x.min()) - 1.
+ return x
+
+
+class VQModelInterface(VQModel):
+ def __init__(self, embed_dim, *args, **kwargs):
+ super().__init__(embed_dim=embed_dim, *args, **kwargs)
+ self.embed_dim = embed_dim
+
+ def encode(self, x):
+ h = self.encoder(x)
+ h = self.quant_conv(h)
+ return h
+
+ def decode(self, h, force_not_quantize=False):
+ # also go through quantization layer
+ if not force_not_quantize:
+ quant, emb_loss, info = self.quantize(h)
+ else:
+ quant = h
+ quant = self.post_quant_conv(quant)
+ dec = self.decoder(quant)
+ return dec
+
+
+class AutoencoderKL(pl.LightningModule):
+ def __init__(self,
+ ddconfig,
+ lossconfig,
+ embed_dim,
+ ckpt_path=None,
+ ignore_keys=[],
+ image_key="image",
+ colorize_nlabels=None,
+ monitor=None,
+ ):
+ super().__init__()
+ self.image_key = image_key
+ self.encoder = Encoder(**ddconfig)
+ self.decoder = Decoder(**ddconfig)
+ self.loss = instantiate_from_config(lossconfig)
+ assert ddconfig["double_z"]
+ self.quant_conv = torch.nn.Conv2d(2*ddconfig["z_channels"], 2*embed_dim, 1)
+ self.post_quant_conv = torch.nn.Conv2d(embed_dim, ddconfig["z_channels"], 1)
+ self.embed_dim = embed_dim
+ if colorize_nlabels is not None:
+ assert type(colorize_nlabels)==int
+ self.register_buffer("colorize", torch.randn(3, colorize_nlabels, 1, 1))
+ if monitor is not None:
+ self.monitor = monitor
+ if ckpt_path is not None:
+ self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys)
+
+ def init_from_ckpt(self, path, ignore_keys=list()):
+ sd = torch.load(path, map_location="cpu")["state_dict"]
+ keys = list(sd.keys())
+ for k in keys:
+ for ik in ignore_keys:
+ if k.startswith(ik):
+ print("Deleting key {} from state_dict.".format(k))
+ del sd[k]
+ self.load_state_dict(sd, strict=False)
+ print(f"Restored from {path}")
+
+ def encode(self, x):
+ h = self.encoder(x)
+ moments = self.quant_conv(h)
+ posterior = DiagonalGaussianDistribution(moments)
+ return posterior
+
+ def decode(self, z):
+ z = self.post_quant_conv(z)
+ dec = self.decoder(z)
+ return dec
+
+ def forward(self, input, sample_posterior=True):
+ posterior = self.encode(input)
+ if sample_posterior:
+ z = posterior.sample()
+ else:
+ z = posterior.mode()
+ dec = self.decode(z)
+ return dec, posterior
+
+ def get_input(self, batch, k):
+ x = batch[k]
+ if len(x.shape) == 3:
+ x = x[..., None]
+ x = x.permute(0, 3, 1, 2).to(memory_format=torch.contiguous_format).float()
+ return x
+
+ def training_step(self, batch, batch_idx, optimizer_idx):
+ inputs = self.get_input(batch, self.image_key)
+ reconstructions, posterior = self(inputs)
+
+ if optimizer_idx == 0:
+ # train encoder+decoder+logvar
+ aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step,
+ last_layer=self.get_last_layer(), split="train")
+ self.log("aeloss", aeloss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log_dict(log_dict_ae, prog_bar=False, logger=True, on_step=True, on_epoch=False)
+ return aeloss
+
+ if optimizer_idx == 1:
+ # train the discriminator
+ discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, optimizer_idx, self.global_step,
+ last_layer=self.get_last_layer(), split="train")
+
+ self.log("discloss", discloss, prog_bar=True, logger=True, on_step=True, on_epoch=True)
+ self.log_dict(log_dict_disc, prog_bar=False, logger=True, on_step=True, on_epoch=False)
+ return discloss
+
+ def validation_step(self, batch, batch_idx):
+ inputs = self.get_input(batch, self.image_key)
+ reconstructions, posterior = self(inputs)
+ aeloss, log_dict_ae = self.loss(inputs, reconstructions, posterior, 0, self.global_step,
+ last_layer=self.get_last_layer(), split="val")
+
+ discloss, log_dict_disc = self.loss(inputs, reconstructions, posterior, 1, self.global_step,
+ last_layer=self.get_last_layer(), split="val")
+
+ self.log("val/rec_loss", log_dict_ae["val/rec_loss"])
+ self.log_dict(log_dict_ae)
+ self.log_dict(log_dict_disc)
+ return self.log_dict
+
+ def configure_optimizers(self):
+ lr = self.learning_rate
+ opt_ae = torch.optim.Adam(list(self.encoder.parameters())+
+ list(self.decoder.parameters())+
+ list(self.quant_conv.parameters())+
+ list(self.post_quant_conv.parameters()),
+ lr=lr, betas=(0.5, 0.9))
+ opt_disc = torch.optim.Adam(self.loss.discriminator.parameters(),
+ lr=lr, betas=(0.5, 0.9))
+ return [opt_ae, opt_disc], []
+
+ def get_last_layer(self):
+ return self.decoder.conv_out.weight
+
+ @torch.no_grad()
+ def log_images(self, batch, only_inputs=False, **kwargs):
+ log = dict()
+ x = self.get_input(batch, self.image_key)
+ x = x.to(self.device)
+ if not only_inputs:
+ xrec, posterior = self(x)
+ if x.shape[1] > 3:
+ # colorize with random projection
+ assert xrec.shape[1] > 3
+ x = self.to_rgb(x)
+ xrec = self.to_rgb(xrec)
+ log["samples"] = self.decode(torch.randn_like(posterior.sample()))
+ log["reconstructions"] = xrec
+ log["inputs"] = x
+ return log
+
+ def to_rgb(self, x):
+ assert self.image_key == "segmentation"
+ if not hasattr(self, "colorize"):
+ self.register_buffer("colorize", torch.randn(3, x.shape[1], 1, 1).to(x))
+ x = F.conv2d(x, weight=self.colorize)
+ x = 2.*(x-x.min())/(x.max()-x.min()) - 1.
+ return x
+
+
+class IdentityFirstStage(torch.nn.Module):
+ def __init__(self, *args, vq_interface=False, **kwargs):
+ self.vq_interface = vq_interface # TODO: Should be true by default but check to not break older stuff
+ super().__init__()
+
+ def encode(self, x, *args, **kwargs):
+ return x
+
+ def decode(self, x, *args, **kwargs):
+ return x
+
+ def quantize(self, x, *args, **kwargs):
+ if self.vq_interface:
+ return x, None, [None, None, None]
+ return x
+
+ def forward(self, x, *args, **kwargs):
+ return x
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a0a6c5c8498f6e90048a498af4a5e3c5ac80fdbc
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..637c33777116551129bb05e302eb660b05d59459
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fdae1ed7cee83d48e8c8da0502f9d6d048099152
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e64ea9ed5c8cf9cd22ad6701249f73db2cb49cb7
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..860460279ad6ce385fca9f904da19c0cbd7e3e3b
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..72d470aa6db2b4645e46c053ca2b75f66cb86565
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0316ec9509ea087b0d264008c784fe1f519842fc
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cd777be03502553fefc2db70a66ea688fa79b5d7
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddim.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..569d059b4be416d9d043d85dc6a6fe3b69b95b57
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f2f904e735b4824dba6d06163d16650289c754b1
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cc99d3087e2b2258db410c0915387a68f4885e6d
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4bebcfb4d47aa615a0dfca4cc440e74ec7b8f0dc
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5aa90ee9132f4b54874dc62c3011ad487bdbec69
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c0cfebea6c912269ad5524fec1bd9ce1f5d366a4
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bd5e4df69943c22f5b92822523f6fb0fb2ee6f26
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_pseudo3D.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5e3c632485f61af3ee9dacdf071f27d03cbbfdcc
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon_vq.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon_vq.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2da866830c272f6486c94762e9c5937e0d1d67a7
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/__pycache__/ddpm_recon_vq.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddim.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddim.py
new file mode 100644
index 0000000000000000000000000000000000000000..9f8dc584daffe533c0a02a721daa35918a9487f9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddim.py
@@ -0,0 +1,365 @@
+"""SAMPLING ONLY."""
+
+import torch
+import numpy as np
+from tqdm import tqdm
+from einops import rearrange
+
+from ldm.modules.diffusionmodules.util import make_ddim_sampling_parameters, make_ddim_timesteps, noise_like, extract_into_tensor
+
+
+class DDIMSampler(object):
+ def __init__(self, model, schedule="linear", **kwargs):
+ super().__init__()
+ self.model = model
+ self.ddpm_num_timesteps = model.num_timesteps
+ self.schedule = schedule
+
+ def register_buffer(self, name, attr):
+ if type(attr) == torch.Tensor:
+ if attr.device != torch.device("cuda"):
+ attr = attr.to(torch.device("cuda"))
+ setattr(self, name, attr)
+
+ def make_schedule(self, ddim_num_steps, ddim_discretize="uniform", ddim_eta=0., verbose=True):
+ self.ddim_timesteps = make_ddim_timesteps(ddim_discr_method=ddim_discretize, num_ddim_timesteps=ddim_num_steps,
+ num_ddpm_timesteps=self.ddpm_num_timesteps,verbose=verbose)
+ alphas_cumprod = self.model.alphas_cumprod
+ assert alphas_cumprod.shape[0] == self.ddpm_num_timesteps, 'alphas have to be defined for each timestep'
+ to_torch = lambda x: x.clone().detach().to(torch.float32).to(self.model.device)
+
+ self.register_buffer('betas', to_torch(self.model.betas))
+ self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod))
+ self.register_buffer('alphas_cumprod_prev', to_torch(self.model.alphas_cumprod_prev))
+
+ # calculations for diffusion q(x_t | x_{t-1}) and others
+ self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod.cpu())))
+ self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod.cpu())))
+ self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod.cpu())))
+ self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu())))
+ self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu() - 1)))
+
+ # ddim sampling parameters
+ ddim_sigmas, ddim_alphas, ddim_alphas_prev = make_ddim_sampling_parameters(alphacums=alphas_cumprod.cpu(),
+ ddim_timesteps=self.ddim_timesteps,
+ eta=ddim_eta,verbose=verbose)
+ self.register_buffer('ddim_sigmas', ddim_sigmas)
+ self.register_buffer('ddim_alphas', ddim_alphas)
+ self.register_buffer('ddim_alphas_prev', ddim_alphas_prev)
+ self.register_buffer('ddim_sqrt_one_minus_alphas', np.sqrt(1. - ddim_alphas))
+ sigmas_for_original_sampling_steps = ddim_eta * torch.sqrt(
+ (1 - self.alphas_cumprod_prev) / (1 - self.alphas_cumprod) * (
+ 1 - self.alphas_cumprod / self.alphas_cumprod_prev))
+ self.register_buffer('ddim_sigmas_for_original_num_steps', sigmas_for_original_sampling_steps)
+
+ @torch.no_grad()
+ def sample(self,
+ S,
+ batch_size,
+ shape,
+ conditioning=None,
+ callback=None,
+ normals_sequence=None,
+ img_callback=None,
+ quantize_x0=False,
+ eta=0.,
+ mask=None,
+ x0=None,
+ temperature=1.,
+ noise_dropout=0.,
+ score_corrector=None,
+ corrector_kwargs=None,
+ verbose=True,
+ x_T=None,
+ log_every_t=100,
+ unconditional_guidance_scale=1.,
+ unconditional_conditioning=None, # this has to come in the same format as the conditioning, # e.g. as encoded tokens, ...
+ dynamic_threshold=None,
+ ucg_schedule=None,
+ previous=None,
+ previous_reverse=False,
+ **kwargs
+ ):
+ if conditioning is not None:
+ if isinstance(conditioning, dict):
+ ctmp = conditioning[list(conditioning.keys())[0]]
+ while isinstance(ctmp, list): ctmp = ctmp[0]
+ cbs = ctmp.shape[0]
+ if cbs != batch_size:
+ print(f"Warning: Got {cbs} conditionings but batch-size is {batch_size}")
+
+ elif isinstance(conditioning, list):
+ for ctmp in conditioning:
+ if ctmp.shape[0] != batch_size:
+ print(f"Warning: Got {cbs} conditionings but batch-size is {batch_size}")
+
+ else:
+ if conditioning.shape[0] != batch_size:
+ print(f"Warning: Got {conditioning.shape[0]} conditionings but batch-size is {batch_size}")
+
+ self.make_schedule(ddim_num_steps=S, ddim_eta=eta, verbose=verbose)
+ # sampling
+ C, H, W = shape
+ size = (batch_size, C, H, W)
+ print(f'Data shape for DDIM sampling is {size}, eta {eta}')
+ # breakpoint()
+ samples, intermediates = self.ddim_sampling(conditioning, size,
+ callback=callback,
+ img_callback=img_callback,
+ quantize_denoised=quantize_x0,
+ mask=mask, x0=x0,
+ ddim_use_original_steps=False,
+ noise_dropout=noise_dropout,
+ temperature=temperature,
+ score_corrector=score_corrector,
+ corrector_kwargs=corrector_kwargs,
+ x_T=x_T,
+ log_every_t=log_every_t,
+ previous=previous,
+ previous_reverse=previous_reverse,
+ unconditional_guidance_scale=unconditional_guidance_scale,
+ unconditional_conditioning=unconditional_conditioning,
+ dynamic_threshold=dynamic_threshold,
+ ucg_schedule=ucg_schedule
+ )
+ return samples, intermediates
+
+ @torch.no_grad()
+ def ddim_sampling(self, cond, shape,
+ x_T=None, ddim_use_original_steps=False,
+ callback=None, timesteps=None, quantize_denoised=False,
+ mask=None, x0=None, img_callback=None, log_every_t=100,
+ temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None,
+ unconditional_guidance_scale=1., unconditional_conditioning=None, dynamic_threshold=None,
+ ucg_schedule=None, previous=None, previous_reverse=False):
+ device = self.model.betas.device
+ b = shape[0]
+ if x_T is None:
+ img = torch.randn(shape, device=device)
+ else:
+ img = x_T
+
+ if previous is not None:
+ img = rearrange(img, '(b t) c h w -> b t c h w', b=previous.shape[0])
+ alphas = self.model.alphas_cumprod
+ c0 = torch.sqrt(alphas[-1])
+ c1 = torch.sqrt(1-alphas[-1])
+ previous_noisy = c0*previous+c1*torch.randn_like(previous)
+ if not previous_reverse:
+ img[:, :previous.shape[1]] = previous_noisy
+ else:
+ img[:, -previous.shape[1]:] = previous_noisy
+ img = rearrange(img, 'b t c h w -> (b t) c h w')
+
+ if timesteps is None:
+ timesteps = self.ddpm_num_timesteps if ddim_use_original_steps else self.ddim_timesteps
+ elif timesteps is not None and not ddim_use_original_steps:
+ subset_end = int(min(timesteps / self.ddim_timesteps.shape[0], 1) * self.ddim_timesteps.shape[0]) - 1
+ timesteps = self.ddim_timesteps[:subset_end]
+
+ intermediates = {'x_inter': [img], 'pred_x0': [img]}
+ time_range = reversed(range(0,timesteps)) if ddim_use_original_steps else np.flip(timesteps)
+ total_steps = timesteps if ddim_use_original_steps else timesteps.shape[0]
+ print(f"Running DDIM Sampling with {total_steps} timesteps")
+
+ iterator = tqdm(time_range, desc='DDIM Sampler', total=total_steps)
+
+ for i, step in enumerate(iterator):
+ index = total_steps - i - 1
+ ts = torch.full((b,), step, device=device, dtype=torch.long)
+
+ if mask is not None:
+ assert x0 is not None
+ img_orig = self.model.q_sample(x0, ts)
+ img = img_orig * mask + (1. - mask) * img
+
+ if ucg_schedule is not None:
+ assert len(ucg_schedule) == len(time_range)
+ unconditional_guidance_scale = ucg_schedule[i]
+
+ outs = self.p_sample_ddim(img, cond, ts, index=index, use_original_steps=ddim_use_original_steps,
+ quantize_denoised=quantize_denoised, temperature=temperature,
+ noise_dropout=noise_dropout, score_corrector=score_corrector,
+ corrector_kwargs=corrector_kwargs,
+ unconditional_guidance_scale=unconditional_guidance_scale,
+ unconditional_conditioning=unconditional_conditioning,
+ dynamic_threshold=dynamic_threshold)
+ img, pred_x0 = outs
+ if callback: callback(i)
+ if img_callback: img_callback(pred_x0, i)
+
+ if previous is not None:
+ img = rearrange(img, '(b t) c h w -> b t c h w', b=previous.shape[0])
+ alphas = self.model.alphas_cumprod
+ c0 = torch.sqrt(alphas[index])
+ c1 = torch.sqrt(1-alphas[index])
+ previous_noisy = c0*previous+c1*torch.randn_like(previous)
+ if not previous_reverse:
+ img[:, :previous.shape[1]] = previous_noisy
+ else:
+ img[:, -previous.shape[1]:] = previous_noisy
+ img = rearrange(img, 'b t c h w -> (b t) c h w')
+
+ if index % log_every_t == 0 or index == total_steps - 1:
+ intermediates['x_inter'].append(img)
+ intermediates['pred_x0'].append(pred_x0)
+
+ return img, intermediates
+
+ @torch.no_grad()
+ def p_sample_ddim(self, x, c, t, index, repeat_noise=False, use_original_steps=False, quantize_denoised=False,
+ temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None,
+ unconditional_guidance_scale=1., unconditional_conditioning=None,
+ dynamic_threshold=None):
+ b, *_, device = *x.shape, x.device
+
+ if unconditional_conditioning is None or unconditional_guidance_scale == 1.:
+ model_output = self.model.apply_model(x, t, c)
+ else:
+ x_in = torch.cat([x] * 2)
+ t_in = torch.cat([t] * 2)
+ if isinstance(c, dict):
+ assert isinstance(unconditional_conditioning, dict)
+ c_in = dict()
+ for k in c:
+ if isinstance(c[k], list):
+ c_in[k] = [torch.cat([
+ unconditional_conditioning[k][i],
+ c[k][i]]) for i in range(len(c[k]))]
+ else:
+ c_in[k] = torch.cat([
+ unconditional_conditioning[k],
+ c[k]])
+ elif isinstance(c, list):
+ c_in = list()
+ assert isinstance(unconditional_conditioning, list)
+ for i in range(len(c)):
+ c_in.append(torch.cat([unconditional_conditioning[i], c[i]]))
+ else:
+ c_in = torch.cat([unconditional_conditioning, c])
+ model_uncond, model_t = self.model.apply_model(x_in, t_in, c_in).chunk(2)
+ model_output = model_uncond + unconditional_guidance_scale * (model_t - model_uncond)
+
+ if self.model.parameterization == "v":
+ e_t = self.model.predict_eps_from_z_and_v(x, t, model_output)
+ else:
+ e_t = model_output
+
+ if score_corrector is not None:
+ assert self.model.parameterization == "eps", 'not implemented'
+ e_t = score_corrector.modify_score(self.model, e_t, x, t, c, **corrector_kwargs)
+
+ alphas = self.model.alphas_cumprod if use_original_steps else self.ddim_alphas
+ alphas_prev = self.model.alphas_cumprod_prev if use_original_steps else self.ddim_alphas_prev
+ sqrt_one_minus_alphas = self.model.sqrt_one_minus_alphas_cumprod if use_original_steps else self.ddim_sqrt_one_minus_alphas
+ sigmas = self.model.ddim_sigmas_for_original_num_steps if use_original_steps else self.ddim_sigmas
+ # select parameters corresponding to the currently considered timestep
+ a_t = torch.full((b, 1, 1, 1), alphas[index], device=device)
+ a_prev = torch.full((b, 1, 1, 1), alphas_prev[index], device=device)
+ sigma_t = torch.full((b, 1, 1, 1), sigmas[index], device=device)
+ sqrt_one_minus_at = torch.full((b, 1, 1, 1), sqrt_one_minus_alphas[index],device=device)
+
+ # current prediction for x_0
+ if self.model.parameterization != "v":
+ pred_x0 = (x - sqrt_one_minus_at * e_t) / a_t.sqrt()
+ else:
+ pred_x0 = self.model.predict_start_from_z_and_v(x, t, model_output)
+
+ if quantize_denoised:
+ pred_x0, _, *_ = self.model.first_stage_model.quantize(pred_x0)
+
+ if dynamic_threshold is not None:
+ raise NotImplementedError()
+
+ # direction pointing to x_t
+ dir_xt = (1. - a_prev - sigma_t**2).sqrt() * e_t
+ noise = sigma_t * noise_like(x.shape, device, repeat_noise) * temperature
+ if noise_dropout > 0.:
+ noise = torch.nn.functional.dropout(noise, p=noise_dropout)
+ x_prev = a_prev.sqrt() * pred_x0 + dir_xt + noise
+ return x_prev, pred_x0
+
+ @torch.no_grad()
+ def encode(self, x0, c, t_enc, use_original_steps=False, return_intermediates=None,
+ unconditional_guidance_scale=1.0, unconditional_conditioning=None, callback=None):
+ num_reference_steps = self.ddpm_num_timesteps if use_original_steps else self.ddim_timesteps.shape[0]
+
+ assert t_enc <= num_reference_steps
+ num_steps = t_enc
+
+ if use_original_steps:
+ alphas_next = self.alphas_cumprod[:num_steps]
+ alphas = self.alphas_cumprod_prev[:num_steps]
+ else:
+ alphas_next = self.ddim_alphas[:num_steps]
+ alphas = torch.tensor(self.ddim_alphas_prev[:num_steps])
+
+ x_next = x0
+ intermediates = []
+ inter_steps = []
+ for i in tqdm(range(num_steps), desc='Encoding Image'):
+ t = torch.full((x0.shape[0],), i, device=self.model.device, dtype=torch.long)
+ if unconditional_guidance_scale == 1.:
+ noise_pred = self.model.apply_model(x_next, t, c)
+ else:
+ assert unconditional_conditioning is not None
+ e_t_uncond, noise_pred = torch.chunk(
+ self.model.apply_model(torch.cat((x_next, x_next)), torch.cat((t, t)),
+ torch.cat((unconditional_conditioning, c))), 2)
+ noise_pred = e_t_uncond + unconditional_guidance_scale * (noise_pred - e_t_uncond)
+
+ xt_weighted = (alphas_next[i] / alphas[i]).sqrt() * x_next
+ weighted_noise_pred = alphas_next[i].sqrt() * (
+ (1 / alphas_next[i] - 1).sqrt() - (1 / alphas[i] - 1).sqrt()) * noise_pred
+ x_next = xt_weighted + weighted_noise_pred
+ if return_intermediates and i % (
+ num_steps // return_intermediates) == 0 and i < num_steps - 1:
+ intermediates.append(x_next)
+ inter_steps.append(i)
+ elif return_intermediates and i >= num_steps - 2:
+ intermediates.append(x_next)
+ inter_steps.append(i)
+ if callback: callback(i)
+
+ out = {'x_encoded': x_next, 'intermediate_steps': inter_steps}
+ if return_intermediates:
+ out.update({'intermediates': intermediates})
+ return x_next, out
+
+ @torch.no_grad()
+ def stochastic_encode(self, x0, t, use_original_steps=False, noise=None):
+ # fast, but does not allow for exact reconstruction
+ # t serves as an index to gather the correct alphas
+ if use_original_steps:
+ sqrt_alphas_cumprod = self.sqrt_alphas_cumprod
+ sqrt_one_minus_alphas_cumprod = self.sqrt_one_minus_alphas_cumprod
+ else:
+ sqrt_alphas_cumprod = torch.sqrt(self.ddim_alphas)
+ sqrt_one_minus_alphas_cumprod = self.ddim_sqrt_one_minus_alphas
+
+ if noise is None:
+ noise = torch.randn_like(x0)
+ return (extract_into_tensor(sqrt_alphas_cumprod, t, x0.shape) * x0 +
+ extract_into_tensor(sqrt_one_minus_alphas_cumprod, t, x0.shape) * noise)
+
+ @torch.no_grad()
+ def decode(self, x_latent, cond, t_start, unconditional_guidance_scale=1.0, unconditional_conditioning=None,
+ use_original_steps=False, callback=None):
+
+ timesteps = np.arange(self.ddpm_num_timesteps) if use_original_steps else self.ddim_timesteps
+ timesteps = timesteps[:t_start]
+
+ time_range = np.flip(timesteps)
+ total_steps = timesteps.shape[0]
+ print(f"Running DDIM Sampling with {total_steps} timesteps")
+
+ iterator = tqdm(time_range, desc='Decoding image', total=total_steps)
+ x_dec = x_latent
+ for i, step in enumerate(iterator):
+ index = total_steps - i - 1
+ ts = torch.full((x_latent.shape[0],), step, device=x_latent.device, dtype=torch.long)
+ x_dec, _ = self.p_sample_ddim(x_dec, cond, ts, index=index, use_original_steps=use_original_steps,
+ unconditional_guidance_scale=unconditional_guidance_scale,
+ unconditional_conditioning=unconditional_conditioning)
+ if callback: callback(i)
+ return x_dec
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm.py
new file mode 100644
index 0000000000000000000000000000000000000000..a48c20da2b526c989996ce755d280f3c9c63d2ef
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm.py
@@ -0,0 +1,1447 @@
+"""
+wild mixture of
+https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py
+https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py
+https://github.com/CompVis/taming-transformers
+-- merci
+"""
+
+import torch
+import torch.nn as nn
+import numpy as np
+
+import enum
+
+# 保存原始实现(可选,用于调试或回滚)
+_enum_format_orig = enum.Enum.__format__
+
+def _enum_format_value(self, format_spec: str) -> str:
+ # 如果指定了 format 规范,就交给 value 本身的格式化;否则直接返回 value
+ return format(self.value, format_spec) if format_spec else str(self.value)
+
+# 全局替换 Enum.__format__
+enum.Enum.__format__ = _enum_format_value
+
+import pytorch_lightning as pl
+from torch.optim.lr_scheduler import LambdaLR
+from einops import rearrange, repeat
+from contextlib import contextmanager, nullcontext
+from functools import partial
+import itertools
+from tqdm import tqdm
+from torchvision.utils import make_grid
+from pytorch_lightning.utilities.distributed import rank_zero_only
+from omegaconf import ListConfig
+
+from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config
+from ldm.modules.ema import LitEma
+from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution
+from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL
+from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like
+from ldm.models.diffusion.ddim import DDIMSampler
+from transformers import BertTokenizer,BertModel
+
+__conditioning_keys__ = {'concat': 'c_concat',
+ 'crossattn': 'c_crossattn',
+ 'adm': 'y'}
+
+
+def disabled_train(self, mode=True):
+ """Overwrite model.train with this function to make sure train/eval mode
+ does not change anymore."""
+ return self
+
+
+def uniform_on_device(r1, r2, shape, device):
+ return (r1 - r2) * torch.rand(*shape, device=device) + r2
+
+
+class DDPM(pl.LightningModule):
+ # classic DDPM with Gaussian diffusion, in image space
+ def __init__(self,
+ unet_config,
+ timesteps=1000,
+ beta_schedule="linear",
+ loss_type="l2",
+ ckpt_path=None,
+ ignore_keys=[],
+ load_only_unet=False,
+ monitor="val/loss",
+ use_ema=True,
+ first_stage_key="image",
+ image_size=256,
+ channels=3,
+ log_every_t=100,
+ clip_denoised=True,
+ linear_start=1e-4,
+ linear_end=2e-2,
+ cosine_s=8e-3,
+ given_betas=None,
+ original_elbo_weight=0.,
+ v_posterior=0., # weight for choosing posterior variance as sigma = (1-v) * beta_tilde + v * beta
+ l_simple_weight=1.,
+ conditioning_key=None,
+ parameterization="eps", # all assuming fixed variance schedules
+ scheduler_config=None,
+ use_positional_encodings=False,
+ learn_logvar=False,
+ logvar_init=0.,
+ make_it_fit=False,
+ ucg_training=None,
+ reset_ema=False,
+ reset_num_ema_updates=False,
+ ):
+ super().__init__()
+ assert parameterization in ["eps", "x0", "v"], 'currently only supporting "eps" and "x0" and "v"'
+ self.parameterization = parameterization
+ print(f"{self.__class__.__name__}: Running in {self.parameterization}-prediction mode")
+ self.cond_stage_model = None
+ self.clip_denoised = clip_denoised
+ self.log_every_t = log_every_t
+ self.first_stage_key = first_stage_key
+ self.image_size = image_size # try conv?
+ self.channels = channels
+
+ self.use_positional_encodings = use_positional_encodings
+ self.model = DiffusionWrapper(unet_config, conditioning_key)
+ count_params(self.model, verbose=True)
+ self.use_ema = use_ema
+ if self.use_ema:
+ self.model_ema = LitEma(self.model)
+ print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.")
+
+ self.use_scheduler = scheduler_config is not None
+ if self.use_scheduler:
+ self.scheduler_config = scheduler_config
+
+ self.v_posterior = v_posterior
+ self.original_elbo_weight = original_elbo_weight
+ self.l_simple_weight = l_simple_weight
+
+ if monitor is not None:
+ self.monitor = monitor
+ self.make_it_fit = make_it_fit
+ if reset_ema: assert exists(ckpt_path)
+ if ckpt_path is not None:
+ self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys, only_model=load_only_unet)
+ if reset_ema:
+ assert self.use_ema
+ print(f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.")
+ self.model_ema = LitEma(self.model)
+ if reset_num_ema_updates:
+ print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ")
+ assert self.use_ema
+ self.model_ema.reset_num_updates()
+
+ self.register_schedule(given_betas=given_betas, beta_schedule=beta_schedule, timesteps=timesteps,
+ linear_start=linear_start, linear_end=linear_end, cosine_s=cosine_s)
+
+ self.loss_type = loss_type
+
+ self.learn_logvar = learn_logvar
+ logvar = torch.full(fill_value=logvar_init, size=(self.num_timesteps,))
+ if self.learn_logvar:
+ self.logvar = nn.Parameter(self.logvar, requires_grad=True)
+ else:
+ self.register_buffer('logvar', logvar)
+
+ self.ucg_training = ucg_training or dict()
+ if self.ucg_training:
+ self.ucg_prng = np.random.RandomState()
+
+ def register_schedule(self, given_betas=None, beta_schedule="linear", timesteps=1000,
+ linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3):
+ if exists(given_betas):
+ betas = given_betas
+ else:
+ betas = make_beta_schedule(beta_schedule, timesteps, linear_start=linear_start, linear_end=linear_end,
+ cosine_s=cosine_s)
+ alphas = 1. - betas
+ alphas_cumprod = np.cumprod(alphas, axis=0)
+ alphas_cumprod_prev = np.append(1., alphas_cumprod[:-1])
+
+ timesteps, = betas.shape
+ self.num_timesteps = int(timesteps)
+ self.linear_start = linear_start
+ self.linear_end = linear_end
+ assert alphas_cumprod.shape[0] == self.num_timesteps, 'alphas have to be defined for each timestep'
+
+ to_torch = partial(torch.tensor, dtype=torch.float32)
+
+ self.register_buffer('betas', to_torch(betas))
+ self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod))
+ self.register_buffer('alphas_cumprod_prev', to_torch(alphas_cumprod_prev))
+
+ # calculations for diffusion q(x_t | x_{t-1}) and others
+ self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod)))
+ self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod)))
+ self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod)))
+ self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod)))
+ self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod - 1)))
+
+ # calculations for posterior q(x_{t-1} | x_t, x_0)
+ posterior_variance = (1 - self.v_posterior) * betas * (1. - alphas_cumprod_prev) / (
+ 1. - alphas_cumprod) + self.v_posterior * betas
+ # above: equal to 1. / (1. / (1. - alpha_cumprod_tm1) + alpha_t / beta_t)
+ self.register_buffer('posterior_variance', to_torch(posterior_variance))
+ # below: log calculation clipped because the posterior variance is 0 at the beginning of the diffusion chain
+ self.register_buffer('posterior_log_variance_clipped', to_torch(np.log(np.maximum(posterior_variance, 1e-20))))
+ self.register_buffer('posterior_mean_coef1', to_torch(
+ betas * np.sqrt(alphas_cumprod_prev) / (1. - alphas_cumprod)))
+ self.register_buffer('posterior_mean_coef2', to_torch(
+ (1. - alphas_cumprod_prev) * np.sqrt(alphas) / (1. - alphas_cumprod)))
+
+ if self.parameterization == "eps":
+ lvlb_weights = self.betas ** 2 / (
+ 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod))
+ elif self.parameterization == "x0":
+ lvlb_weights = 0.5 * np.sqrt(torch.Tensor(alphas_cumprod)) / (2. * 1 - torch.Tensor(alphas_cumprod))
+ elif self.parameterization == "v":
+ lvlb_weights = torch.ones_like(self.betas ** 2 / (
+ 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod)))
+ else:
+ raise NotImplementedError("mu not supported")
+ lvlb_weights[0] = lvlb_weights[1]
+ self.register_buffer('lvlb_weights', lvlb_weights, persistent=False)
+ assert not torch.isnan(self.lvlb_weights).all()
+
+ @contextmanager
+ def ema_scope(self, context=None):
+ if self.use_ema:
+ self.model_ema.store(self.model.parameters())
+ self.model_ema.copy_to(self.model)
+ if context is not None:
+ print(f"{context}: Switched to EMA weights")
+ try:
+ yield None
+ finally:
+ if self.use_ema:
+ self.model_ema.restore(self.model.parameters())
+ if context is not None:
+ print(f"{context}: Restored training weights")
+
+ @torch.no_grad()
+ def init_from_ckpt(self, path, ignore_keys=list(), only_model=False):
+ sd = torch.load(path, map_location="cpu")
+ if "state_dict" in list(sd.keys()):
+ sd = sd["state_dict"]
+ keys = list(sd.keys())
+ for k in keys:
+ for ik in ignore_keys:
+ if k.startswith(ik):
+ print("Deleting key {} from state_dict.".format(k))
+ del sd[k]
+ if self.make_it_fit:
+ n_params = len([name for name, _ in
+ itertools.chain(self.named_parameters(),
+ self.named_buffers())])
+ for name, param in tqdm(
+ itertools.chain(self.named_parameters(),
+ self.named_buffers()),
+ desc="Fitting old weights to new weights",
+ total=n_params
+ ):
+ if not name in sd:
+ continue
+ old_shape = sd[name].shape
+ new_shape = param.shape
+ assert len(old_shape) == len(new_shape)
+ if len(new_shape) > 2:
+ # we only modify first two axes
+ assert new_shape[2:] == old_shape[2:]
+ # assumes first axis corresponds to output dim
+ if not new_shape == old_shape:
+ new_param = param.clone()
+ old_param = sd[name]
+ if len(new_shape) == 1:
+ for i in range(new_param.shape[0]):
+ new_param[i] = old_param[i % old_shape[0]]
+ elif len(new_shape) >= 2:
+ for i in range(new_param.shape[0]):
+ for j in range(new_param.shape[1]):
+ new_param[i, j] = old_param[i % old_shape[0], j % old_shape[1]]
+
+ n_used_old = torch.ones(old_shape[1])
+ for j in range(new_param.shape[1]):
+ n_used_old[j % old_shape[1]] += 1
+ n_used_new = torch.zeros(new_shape[1])
+ for j in range(new_param.shape[1]):
+ n_used_new[j] = n_used_old[j % old_shape[1]]
+
+ n_used_new = n_used_new[None, :]
+ while len(n_used_new.shape) < len(new_shape):
+ n_used_new = n_used_new.unsqueeze(-1)
+ new_param /= n_used_new
+
+ sd[name] = new_param
+
+ missing, unexpected = self.load_state_dict(sd, strict=False) if not only_model else self.model.load_state_dict(
+ sd, strict=False)
+ print(f"Restored from {path} with {len(missing)} missing and {len(unexpected)} unexpected keys")
+ if len(missing) > 0:
+ print(f"Missing Keys:\n {missing}")
+ if len(unexpected) > 0:
+ print(f"\nUnexpected Keys:\n {unexpected}")
+
+ def q_mean_variance(self, x_start, t):
+ """
+ Get the distribution q(x_t | x_0).
+ :param x_start: the [N x C x ...] tensor of noiseless inputs.
+ :param t: the number of diffusion steps (minus 1). Here, 0 means one step.
+ :return: A tuple (mean, variance, log_variance), all of x_start's shape.
+ """
+ mean = (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start)
+ variance = extract_into_tensor(1.0 - self.alphas_cumprod, t, x_start.shape)
+ log_variance = extract_into_tensor(self.log_one_minus_alphas_cumprod, t, x_start.shape)
+ return mean, variance, log_variance
+
+ def predict_start_from_noise(self, x_t, t, noise):
+ return (
+ extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t -
+ extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) * noise
+ )
+
+ def predict_start_from_z_and_v(self, x_t, t, v):
+ # self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod)))
+ # self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod)))
+ return (
+ extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * x_t -
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * v
+ )
+
+ def predict_eps_from_z_and_v(self, x_t, t, v):
+ return (
+ extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * v +
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * x_t
+ )
+
+ def q_posterior(self, x_start, x_t, t):
+ posterior_mean = (
+ extract_into_tensor(self.posterior_mean_coef1, t, x_t.shape) * x_start +
+ extract_into_tensor(self.posterior_mean_coef2, t, x_t.shape) * x_t
+ )
+ posterior_variance = extract_into_tensor(self.posterior_variance, t, x_t.shape)
+ posterior_log_variance_clipped = extract_into_tensor(self.posterior_log_variance_clipped, t, x_t.shape)
+ return posterior_mean, posterior_variance, posterior_log_variance_clipped
+
+ def p_mean_variance(self, x, t, clip_denoised: bool):
+ model_out = self.model(x, t)
+ if self.parameterization == "eps":
+ x_recon = self.predict_start_from_noise(x, t=t, noise=model_out)
+ elif self.parameterization == "x0":
+ x_recon = model_out
+ if clip_denoised:
+ x_recon.clamp_(-1., 1.)
+
+ model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t)
+ return model_mean, posterior_variance, posterior_log_variance
+
+ @torch.no_grad()
+ def p_sample(self, x, t, clip_denoised=True, repeat_noise=False):
+ b, *_, device = *x.shape, x.device
+ model_mean, _, model_log_variance = self.p_mean_variance(x=x, t=t, clip_denoised=clip_denoised)
+ noise = noise_like(x.shape, device, repeat_noise)
+ # no noise when t == 0
+ nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1)))
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise
+
+ @torch.no_grad()
+ def p_sample_loop(self, shape, return_intermediates=False):
+ device = self.betas.device
+ b = shape[0]
+ img = torch.randn(shape, device=device)
+ intermediates = [img]
+ for i in tqdm(reversed(range(0, self.num_timesteps)), desc='Sampling t', total=self.num_timesteps):
+ img = self.p_sample(img, torch.full((b,), i, device=device, dtype=torch.long),
+ clip_denoised=self.clip_denoised)
+ if i % self.log_every_t == 0 or i == self.num_timesteps - 1:
+ intermediates.append(img)
+ if return_intermediates:
+ return img, intermediates
+ return img
+
+ @torch.no_grad()
+ def sample(self, batch_size=16, return_intermediates=False):
+ image_size = self.image_size
+ channels = self.channels
+ return self.p_sample_loop((batch_size, channels, image_size, image_size),
+ return_intermediates=return_intermediates)
+
+ def q_sample(self, x_start, t, noise=None):
+ noise = default(noise, lambda: torch.randn_like(x_start))
+ return (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start +
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise)
+
+ def get_v(self, x, noise, t):
+ return (
+ extract_into_tensor(self.sqrt_alphas_cumprod, t, x.shape) * noise -
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x.shape) * x
+ )
+
+ def get_loss(self, pred, target, mean=True):
+ if self.loss_type == 'l1':
+ loss = (target - pred).abs()
+ if mean:
+ loss = loss.mean()
+ elif self.loss_type == 'l2':
+ if mean:
+ loss = torch.nn.functional.mse_loss(target, pred)
+ else:
+ loss = torch.nn.functional.mse_loss(target, pred, reduction='none')
+ else:
+ raise NotImplementedError("unknown loss type '{loss_type}'")
+
+ return loss
+
+ def p_losses(self, x_start, t, noise=None):
+ noise = default(noise, lambda: torch.randn_like(x_start))
+ x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise)
+ model_out = self.model(x_noisy, t)
+
+ loss_dict = {}
+ if self.parameterization == "eps":
+ target = noise
+ elif self.parameterization == "x0":
+ target = x_start
+ elif self.parameterization == "v":
+ target = self.get_v(x_start, noise, t)
+ else:
+ raise NotImplementedError(f"Parameterization {self.parameterization} not yet supported")
+
+ loss = self.get_loss(model_out, target, mean=False).mean(dim=[1, 2, 3])
+
+ log_prefix = 'train' if self.training else 'val'
+
+ loss_dict.update({f'{log_prefix}/loss_simple': loss.mean()})
+ loss_simple = loss.mean() * self.l_simple_weight
+
+ loss_vlb = (self.lvlb_weights[t] * loss).mean()
+ loss_dict.update({f'{log_prefix}/loss_vlb': loss_vlb})
+
+ loss = loss_simple + self.original_elbo_weight * loss_vlb
+
+ loss_dict.update({f'{log_prefix}/loss': loss})
+
+ return loss, loss_dict
+
+ def forward(self, x, *args, **kwargs):
+ # b, c, h, w, device, img_size, = *x.shape, x.device, self.image_size
+ # assert h == img_size and w == img_size, f'height and width of image must be {img_size}'
+ t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long()
+ return self.p_losses(x, t, *args, **kwargs)
+
+ def get_input(self, batch, k):
+ x = batch[k]
+ if len(x.shape) == 3:
+ x = x[..., None]
+ x = rearrange(x, 'b h w c -> b c h w')
+ x = x.to(memory_format=torch.contiguous_format).float()
+ return x
+
+ def shared_step(self, batch):
+ x = self.get_input(batch, self.first_stage_key)
+ loss, loss_dict = self(x)
+ return loss, loss_dict
+
+ def training_step(self, batch, batch_idx):
+ for k in self.ucg_training:
+ p = self.ucg_training[k]["p"]
+ val = self.ucg_training[k]["val"]
+ if val is None:
+ val = ""
+ for i in range(len(batch[k])):
+ if self.ucg_prng.choice(2, p=[1 - p, p]):
+ batch[k][i] = val
+
+ loss, loss_dict = self.shared_step(batch)
+
+ self.log_dict(loss_dict, prog_bar=True,
+ logger=True, on_step=True, on_epoch=True)
+
+ self.log("global_step", self.global_step,
+ prog_bar=True, logger=True, on_step=True, on_epoch=False)
+
+ if self.use_scheduler:
+ lr = self.optimizers().param_groups[0]['lr']
+ self.log('lr_abs', lr, prog_bar=True, logger=True, on_step=True, on_epoch=False)
+
+ return loss
+
+ @torch.no_grad()
+ def validation_step(self, batch, batch_idx):
+ _, loss_dict_no_ema = self.shared_step(batch)
+ with self.ema_scope():
+ _, loss_dict_ema = self.shared_step(batch)
+ loss_dict_ema = {key + '_ema': loss_dict_ema[key] for key in loss_dict_ema}
+ self.log_dict(loss_dict_no_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True)
+ self.log_dict(loss_dict_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True)
+
+ def on_train_batch_end(self, *args, **kwargs):
+ if self.use_ema:
+ self.model_ema(self.model)
+
+ def _get_rows_from_list(self, samples):
+ n_imgs_per_row = len(samples)
+ denoise_grid = rearrange(samples, 'n b c h w -> b n c h w')
+ denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w')
+ denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row)
+ return denoise_grid
+
+ @torch.no_grad()
+ def log_images(self, batch, N=8, n_row=2, sample=True, return_keys=None, **kwargs):
+ log = dict()
+ x = self.get_input(batch, self.first_stage_key)
+ N = min(x.shape[0], N)
+ n_row = min(x.shape[0], n_row)
+ x = x.to(self.device)[:N]
+ log["inputs"] = x
+
+ # get diffusion row
+ diffusion_row = list()
+ x_start = x[:n_row]
+
+ for t in range(self.num_timesteps):
+ if t % self.log_every_t == 0 or t == self.num_timesteps - 1:
+ t = repeat(torch.tensor([t]), '1 -> b', b=n_row)
+ t = t.to(self.device).long()
+ noise = torch.randn_like(x_start)
+ x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise)
+ diffusion_row.append(x_noisy)
+
+ log["diffusion_row"] = self._get_rows_from_list(diffusion_row)
+
+ if sample:
+ # get denoise row
+ with self.ema_scope("Plotting"):
+ samples, denoise_row = self.sample(batch_size=N, return_intermediates=True)
+
+ log["samples"] = samples
+ log["denoise_row"] = self._get_rows_from_list(denoise_row)
+
+ if return_keys:
+ if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0:
+ return log
+ else:
+ return {key: log[key] for key in return_keys}
+ return log
+
+ def configure_optimizers(self):
+ lr = self.learning_rate
+ params = list(self.model.parameters())
+ if self.learn_logvar:
+ params = params + [self.logvar]
+ opt = torch.optim.AdamW(params, lr=lr)
+ return opt
+
+
+class LatentDiffusion(DDPM):
+ """main class"""
+
+ def __init__(self,
+ num_timesteps_cond=None,
+ cond_stage_key="image",
+ cond_stage_trainable=False,
+ concat_mode=True,
+ cond_stage_forward=None,
+ conditioning_key=None,
+ scale_factor=1.0,
+ scale_by_std=False,
+ force_null_conditioning=False,
+ text_enc='custom',
+ *args, **kwargs):
+ self.force_null_conditioning = force_null_conditioning
+ self.num_timesteps_cond = default(num_timesteps_cond, 1)
+ self.scale_by_std = scale_by_std
+ assert self.num_timesteps_cond <= kwargs['timesteps']
+ # for backwards compatibility after implementation of DiffusionWrapper
+ if conditioning_key is None:
+ conditioning_key = 'concat' if concat_mode else 'crossattn'
+
+ ckpt_path = kwargs.pop("ckpt_path", None)
+ reset_ema = kwargs.pop("reset_ema", False)
+ reset_num_ema_updates = kwargs.pop("reset_num_ema_updates", False)
+ ignore_keys = kwargs.pop("ignore_keys", [])
+ super().__init__(conditioning_key=conditioning_key, *args, **kwargs)
+ self.concat_mode = concat_mode
+ self.cond_stage_trainable = cond_stage_trainable
+ self.cond_stage_key = cond_stage_key
+
+ if not scale_by_std:
+ self.scale_factor = scale_factor
+ else:
+ self.register_buffer('scale_factor', torch.tensor(scale_factor))
+ # breakpoint()
+ self.instantiate_first_stage()
+ # self.instantiate_cond_stage()
+
+ self.cond_stage_forward = cond_stage_forward
+ self.clip_denoised = False
+ self.bbox_tokenizer = None
+ self.tokenizer=BertTokenizer.from_pretrained('microsoft/BiomedVLP-CXR-BERT-specialized',do_lower_case=True)
+ self.text_encode_without_mask=False
+ self.text_transformer=BertModel.from_pretrained("microsoft/BiomedVLP-CXR-BERT-specialized")
+ self.text_enc=text_enc
+
+ self.restarted_from_ckpt = False
+ if ckpt_path is not None:
+ self.init_from_ckpt(ckpt_path, ignore_keys)
+ self.restarted_from_ckpt = True
+ if reset_ema:
+ assert self.use_ema
+ print(
+ f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.")
+ self.model_ema = LitEma(self.model)
+ if reset_num_ema_updates:
+ print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ")
+ assert self.use_ema
+ self.model_ema.reset_num_updates()
+
+
+ def make_cond_schedule(self, ):
+ self.cond_ids = torch.full(size=(self.num_timesteps,), fill_value=self.num_timesteps - 1, dtype=torch.long)
+ ids = torch.round(torch.linspace(0, self.num_timesteps - 1, self.num_timesteps_cond)).long()
+ self.cond_ids[:self.num_timesteps_cond] = ids
+
+ @rank_zero_only
+ @torch.no_grad()
+ def on_train_batch_start(self, batch, batch_idx, dataloader_idx):
+ # only for very first batch
+ if self.scale_by_std and self.current_epoch == 0 and self.global_step == 0 and batch_idx == 0 and not self.restarted_from_ckpt:
+ assert self.scale_factor == 1., 'rather not use custom rescaling and std-rescaling simultaneously'
+ # set rescale weight to 1./std of encodings
+ # breakpoint()
+ print("### USING STD-RESCALING ###")
+ x = super().get_input(batch, self.first_stage_key)
+ x = x.to(self.device)
+ encoder_posterior = self.encode_first_stage(x)
+ z = self.get_first_stage_encoding(encoder_posterior).detach()
+ del self.scale_factor
+ self.register_buffer('scale_factor', 1. / z.flatten().std())
+ print(f"setting self.scale_factor to {self.scale_factor}")
+ print("### USING STD-RESCALING ###")
+
+ def register_schedule(self,
+ given_betas=None, beta_schedule="linear", timesteps=1000,
+ linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3):
+ super().register_schedule(given_betas, beta_schedule, timesteps, linear_start, linear_end, cosine_s)
+
+ self.shorten_cond_schedule = self.num_timesteps_cond > 1
+ if self.shorten_cond_schedule:
+ self.make_cond_schedule()
+
+ def instantiate_first_stage(self):
+ from LeanVAE import LeanVAE
+ vqgan_ckpt='LeanVAE/ckpts/LeanVAE-dim16.ckpt'
+ model = LeanVAE.load_from_checkpoint(vqgan_ckpt, strict=False)
+ self.first_stage_model = model.eval()
+ self.first_stage_model.train = disabled_train
+ for param in self.first_stage_model.parameters():
+ param.requires_grad = False
+
+ def instantiate_cond_stage(self, config):
+ # breakpoint()
+ if not self.cond_stage_trainable:
+ if config == "__is_first_stage__":
+ print("Using first stage also as cond stage.")
+ self.cond_stage_model = self.first_stage_model
+ elif config == "__is_unconditional__":
+ print(f"Training {self.__class__.__name__} as an unconditional model.")
+ self.cond_stage_model = None
+ # self.be_unconditional = True
+ else:
+ model = instantiate_from_config(config)
+ self.cond_stage_model = model.eval()
+ self.cond_stage_model.train = disabled_train
+ for param in self.cond_stage_model.parameters():
+ param.requires_grad = False
+ else:
+ assert config != '__is_first_stage__'
+ assert config != '__is_unconditional__'
+ model = instantiate_from_config(config)
+ self.cond_stage_model = model
+
+ def _get_denoise_row_from_list(self, samples, desc='', force_no_decoder_quantization=False):
+ denoise_row = []
+ for zd in tqdm(samples, desc=desc):
+ denoise_row.append(self.decode_first_stage(zd.to(self.device),
+ force_not_quantize=force_no_decoder_quantization))
+ n_imgs_per_row = len(denoise_row)
+ denoise_row = torch.stack(denoise_row) # n_log_step, n_row, C, H, W
+ denoise_grid = rearrange(denoise_row, 'n b c h w -> b n c h w')
+ denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w')
+ denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row)
+ return denoise_grid
+
+ def get_first_stage_encoding(self, encoder_posterior):
+ # breakpoint()
+ if isinstance(encoder_posterior, DiagonalGaussianDistribution):
+ z = encoder_posterior.sample()
+ elif isinstance(encoder_posterior, torch.Tensor):
+ z = encoder_posterior
+ else:
+ raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented")
+ return self.scale_factor * z
+
+ def get_learned_conditioning(self, c):
+ if self.cond_stage_forward is None:
+ if hasattr(self.cond_stage_model, 'encode') and callable(self.cond_stage_model.encode):
+ c = self.cond_stage_model.encode(c)
+ if isinstance(c, DiagonalGaussianDistribution):
+ c = c.mode()
+ else:
+ c = self.cond_stage_model(c)
+ else:
+ assert hasattr(self.cond_stage_model, self.cond_stage_forward)
+ c = getattr(self.cond_stage_model, self.cond_stage_forward)(c)
+ return c
+
+ def meshgrid(self, h, w):
+ y = torch.arange(0, h).view(h, 1, 1).repeat(1, w, 1)
+ x = torch.arange(0, w).view(1, w, 1).repeat(h, 1, 1)
+
+ arr = torch.cat([y, x], dim=-1)
+ return arr
+
+ def delta_border(self, h, w):
+ """
+ :param h: height
+ :param w: width
+ :return: normalized distance to image border,
+ wtith min distance = 0 at border and max dist = 0.5 at image center
+ """
+ lower_right_corner = torch.tensor([h - 1, w - 1]).view(1, 1, 2)
+ arr = self.meshgrid(h, w) / lower_right_corner
+ dist_left_up = torch.min(arr, dim=-1, keepdims=True)[0]
+ dist_right_down = torch.min(1 - arr, dim=-1, keepdims=True)[0]
+ edge_dist = torch.min(torch.cat([dist_left_up, dist_right_down], dim=-1), dim=-1)[0]
+ return edge_dist
+
+ def get_weighting(self, h, w, Ly, Lx, device):
+ weighting = self.delta_border(h, w)
+ weighting = torch.clip(weighting, self.split_input_params["clip_min_weight"],
+ self.split_input_params["clip_max_weight"], )
+ weighting = weighting.view(1, h * w, 1).repeat(1, 1, Ly * Lx).to(device)
+
+ if self.split_input_params["tie_braker"]:
+ L_weighting = self.delta_border(Ly, Lx)
+ L_weighting = torch.clip(L_weighting,
+ self.split_input_params["clip_min_tie_weight"],
+ self.split_input_params["clip_max_tie_weight"])
+
+ L_weighting = L_weighting.view(1, 1, Ly * Lx).to(device)
+ weighting = weighting * L_weighting
+ return weighting
+
+ def get_fold_unfold(self, x, kernel_size, stride, uf=1, df=1): # todo load once not every time, shorten code
+ """
+ :param x: img of size (bs, c, h, w)
+ :return: n img crops of size (n, bs, c, kernel_size[0], kernel_size[1])
+ """
+ bs, nc, h, w = x.shape
+
+ # number of crops in image
+ Ly = (h - kernel_size[0]) // stride[0] + 1
+ Lx = (w - kernel_size[1]) // stride[1] + 1
+
+ if uf == 1 and df == 1:
+ fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride)
+ unfold = torch.nn.Unfold(**fold_params)
+
+ fold = torch.nn.Fold(output_size=x.shape[2:], **fold_params)
+
+ weighting = self.get_weighting(kernel_size[0], kernel_size[1], Ly, Lx, x.device).to(x.dtype)
+ normalization = fold(weighting).view(1, 1, h, w) # normalizes the overlap
+ weighting = weighting.view((1, 1, kernel_size[0], kernel_size[1], Ly * Lx))
+
+ elif uf > 1 and df == 1:
+ fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride)
+ unfold = torch.nn.Unfold(**fold_params)
+
+ fold_params2 = dict(kernel_size=(kernel_size[0] * uf, kernel_size[0] * uf),
+ dilation=1, padding=0,
+ stride=(stride[0] * uf, stride[1] * uf))
+ fold = torch.nn.Fold(output_size=(x.shape[2] * uf, x.shape[3] * uf), **fold_params2)
+
+ weighting = self.get_weighting(kernel_size[0] * uf, kernel_size[1] * uf, Ly, Lx, x.device).to(x.dtype)
+ normalization = fold(weighting).view(1, 1, h * uf, w * uf) # normalizes the overlap
+ weighting = weighting.view((1, 1, kernel_size[0] * uf, kernel_size[1] * uf, Ly * Lx))
+
+ elif df > 1 and uf == 1:
+ fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride)
+ unfold = torch.nn.Unfold(**fold_params)
+
+ fold_params2 = dict(kernel_size=(kernel_size[0] // df, kernel_size[0] // df),
+ dilation=1, padding=0,
+ stride=(stride[0] // df, stride[1] // df))
+ fold = torch.nn.Fold(output_size=(x.shape[2] // df, x.shape[3] // df), **fold_params2)
+
+ weighting = self.get_weighting(kernel_size[0] // df, kernel_size[1] // df, Ly, Lx, x.device).to(x.dtype)
+ normalization = fold(weighting).view(1, 1, h // df, w // df) # normalizes the overlap
+ weighting = weighting.view((1, 1, kernel_size[0] // df, kernel_size[1] // df, Ly * Lx))
+
+ else:
+ raise NotImplementedError
+
+ return fold, unfold, normalization, weighting
+
+ @torch.no_grad()
+ def get_input(self, batch, k, return_first_stage_outputs=False, force_c_encode=False,
+ cond_key=None, return_original_cond=False, bs=None, return_x=False):
+ # breakpoint()
+ if k != 'volume_data' and k != 'slice_data':
+ x = super().get_input(batch, k)
+ elif k == 'volume_data':
+ x = batch[k]
+ x = x.repeat(1,3,1,1,1)
+ x = x.to(memory_format=torch.contiguous_format).float()
+
+ if bs is not None:
+ x = x[:bs]
+ x = x.to(self.device)
+
+ encoder_posterior = self.encode_first_stage(x)
+ z = self.get_first_stage_encoding(encoder_posterior).detach()
+ z = rearrange(z, 'b c z h w -> (b z) c h w')
+ # breakpoint()
+
+ if self.model.conditioning_key is not None and not self.force_null_conditioning:
+ if cond_key is None:
+ cond_key = self.cond_stage_key
+ if cond_key != self.first_stage_key:
+ if cond_key in ['caption', 'coordinates_bbox', "txt", "pos_id"]:
+ xc = batch[cond_key]
+ elif cond_key in ['class_label', 'cls']:
+ xc = batch
+ elif cond_key == 'volume_seg_and_text':
+ xc = batch['volume_seg']
+ xc = xc.repeat(1,3,1,1,1)
+
+ if bs is not None:
+ xc = xc[:bs]
+ xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach()
+ z_len=xc.shape[2]
+ xc = rearrange(xc, 'b c z h w -> (b z) c h w')
+ xc = xc.to(memory_format=torch.contiguous_format).float()
+
+ # breakpoint()
+ text = batch['input_text']
+ text = list(text)
+ text_tokens=self.tokenizer(text, return_tensors="pt", padding="max_length", truncation=True, max_length=512).to(self.device)
+ text_embeddings = self.text_transformer(text_tokens.input_ids, attention_mask = text_tokens.attention_mask )
+ enc_text = text_embeddings[0]
+ enc_text=enc_text[:,None]
+ enc_text = enc_text.repeat(1,z_len,1,1)
+ enc_text = rearrange(enc_text, 'b z l c -> (b z) l c')
+ xc={'c_concat': xc, 'c_crossattn': enc_text}
+ # breakpoint()
+
+ elif cond_key == 'ref_and_volume_seg':
+ xc1 = batch['volume_seg']
+ slice_num = xc1.shape[1]
+ xc1 = rearrange(xc1, 'b z h w c -> (b z) c h w')
+ xc1 = xc1.repeat(1,3,1,1)
+ if bs is not None:
+ xc1 = xc1[:bs]
+ xc1 = self.get_first_stage_encoding(self.encode_first_stage(xc1)).detach()
+ xc1 = xc1.to(memory_format=torch.contiguous_format).float()
+ xc2 = batch['volume_ref']
+ xc2 = xc2.repeat(1,slice_num,1,1,1)
+ xc2 = rearrange(xc2, 'b z h w c -> (b z) c h w')
+ xc2 = xc2.repeat(1,3,1,1)
+ if bs is not None:
+ xc2 = xc2[:bs]
+ xc2 = self.get_first_stage_encoding(self.encode_first_stage(xc2)).detach()
+ xc2 = xc2.to(memory_format=torch.contiguous_format).float()
+ xc = torch.cat([xc1, xc2], dim=1)
+ else:
+ xc = super().get_input(batch, cond_key).to(self.device)
+ else:
+ xc = x
+ # breakpoint()
+ if (not self.cond_stage_trainable or force_c_encode) and k != 'volume_data' and cond_key != 'masked_slice' and cond_key != 'masked_slice':
+ if isinstance(xc, dict) or isinstance(xc, list):
+ c = self.get_learned_conditioning(xc)
+ else:
+ c = self.get_learned_conditioning(xc.to(self.device))
+ else:
+ c = xc
+ if bs is not None:
+ c = c[:bs]
+ # breakpoint()
+ if self.use_positional_encodings:
+ pos_x, pos_y = self.compute_latent_shifts(batch)
+ ckey = __conditioning_keys__[self.model.conditioning_key]
+ c = {ckey: c, 'pos_x': pos_x, 'pos_y': pos_y}
+
+ else:
+ c = None
+ xc = None
+ if self.use_positional_encodings:
+ pos_x, pos_y = self.compute_latent_shifts(batch)
+ c = {'pos_x': pos_x, 'pos_y': pos_y}
+ out = [z, c]
+ if return_first_stage_outputs:
+ xrec = self.decode_first_stage(z)
+ out.extend([x, xrec])
+ if return_x:
+ out.extend([x])
+ if return_original_cond:
+ out.append(xc)
+ return out
+
+ @torch.no_grad()
+ def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False):
+ if predict_cids:
+ if z.dim() == 4:
+ z = torch.argmax(z.exp(), dim=1).long()
+ z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None)
+ z = rearrange(z, 'b h w c -> b c h w').contiguous()
+
+ z = 1. / self.scale_factor * z
+ return self.first_stage_model.decode(z)
+
+ @torch.no_grad()
+ def encode_first_stage(self, x):
+ return self.first_stage_model.encode(x)
+
+ def shared_step(self, batch, **kwargs):
+ x, c = self.get_input(batch, self.first_stage_key)
+ loss = self(x, c)
+ return loss
+
+ def forward(self, x, c, *args, **kwargs):
+ t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long()
+ if self.model.conditioning_key is not None:
+ assert c is not None
+ if self.cond_stage_trainable:
+ c = self.get_learned_conditioning(c)
+ if self.shorten_cond_schedule: # TODO: drop this option
+ tc = self.cond_ids[t].to(self.device)
+ c = self.q_sample(x_start=c, t=tc, noise=torch.randn_like(c.float()))
+ return self.p_losses(x, c, t, *args, **kwargs)
+
+ def apply_model(self, x_noisy, t, cond, return_ids=False):
+ if isinstance(cond, dict):
+ # hybrid case, cond is expected to be a dict
+ pass
+ else:
+ if not isinstance(cond, list):
+ cond = [cond]
+ key = 'c_concat' if self.model.conditioning_key == 'concat' else 'c_crossattn'
+ cond = {key: cond}
+ # breakpoint()
+ x_recon = self.model(x_noisy, t, **cond)
+
+ if isinstance(x_recon, tuple) and not return_ids:
+ return x_recon[0]
+ else:
+ return x_recon
+
+ def _predict_eps_from_xstart(self, x_t, t, pred_xstart):
+ return (extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - pred_xstart) / \
+ extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape)
+
+ def _prior_bpd(self, x_start):
+ """
+ Get the prior KL term for the variational lower-bound, measured in
+ bits-per-dim.
+ This term can't be optimized, as it only depends on the encoder.
+ :param x_start: the [N x C x ...] tensor of inputs.
+ :return: a batch of [N] KL values (in bits), one per batch element.
+ """
+ batch_size = x_start.shape[0]
+ t = torch.tensor([self.num_timesteps - 1] * batch_size, device=x_start.device)
+ qt_mean, _, qt_log_variance = self.q_mean_variance(x_start, t)
+ kl_prior = normal_kl(mean1=qt_mean, logvar1=qt_log_variance, mean2=0.0, logvar2=0.0)
+ return mean_flat(kl_prior) / np.log(2.0)
+
+ def p_losses(self, x_start, cond, t, noise=None):
+ noise = default(noise, lambda: torch.randn_like(x_start))
+ x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise)
+ model_output = self.apply_model(x_noisy, t, cond)
+
+ loss_dict = {}
+ prefix = 'train' if self.training else 'val'
+
+ if self.parameterization == "x0":
+ target = x_start
+ elif self.parameterization == "eps":
+ target = noise
+ elif self.parameterization == "v":
+ target = self.get_v(x_start, noise, t)
+ else:
+ raise NotImplementedError()
+
+ loss_simple = self.get_loss(model_output, target, mean=False).mean([1, 2, 3])
+ loss_dict.update({f'{prefix}/loss_simple': loss_simple.mean()})
+
+ logvar_t = self.logvar[t].to(self.device)
+ loss = loss_simple / torch.exp(logvar_t) + logvar_t
+ # loss = loss_simple / torch.exp(self.logvar) + self.logvar
+ if self.learn_logvar:
+ loss_dict.update({f'{prefix}/loss_gamma': loss.mean()})
+ loss_dict.update({'logvar': self.logvar.data.mean()})
+
+ loss = self.l_simple_weight * loss.mean()
+
+ loss_vlb = self.get_loss(model_output, target, mean=False).mean(dim=(1, 2, 3))
+ loss_vlb = (self.lvlb_weights[t] * loss_vlb).mean()
+ loss_dict.update({f'{prefix}/loss_vlb': loss_vlb})
+ loss += (self.original_elbo_weight * loss_vlb)
+ loss_dict.update({f'{prefix}/loss': loss})
+
+ return loss, loss_dict
+
+ def p_mean_variance(self, x, c, t, clip_denoised: bool, return_codebook_ids=False, quantize_denoised=False,
+ return_x0=False, score_corrector=None, corrector_kwargs=None):
+ t_in = t
+ # breakpoint()
+ model_out = self.apply_model(x, t_in, c, return_ids=return_codebook_ids)
+
+ if score_corrector is not None:
+ assert self.parameterization == "eps"
+ model_out = score_corrector.modify_score(self, model_out, x, t, c, **corrector_kwargs)
+
+ if return_codebook_ids:
+ model_out, logits = model_out
+
+ if self.parameterization == "eps":
+ x_recon = self.predict_start_from_noise(x, t=t, noise=model_out)
+ elif self.parameterization == "x0":
+ x_recon = model_out
+ else:
+ raise NotImplementedError()
+
+ if clip_denoised:
+ x_recon.clamp_(-1., 1.)
+ if quantize_denoised:
+ x_recon, _, [_, _, indices] = self.first_stage_model.quantize(x_recon)
+ model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t)
+ if return_codebook_ids:
+ return model_mean, posterior_variance, posterior_log_variance, logits
+ elif return_x0:
+ return model_mean, posterior_variance, posterior_log_variance, x_recon
+ else:
+ return model_mean, posterior_variance, posterior_log_variance
+
+ @torch.no_grad()
+ def p_sample(self, x, c, t, clip_denoised=False, repeat_noise=False,
+ return_codebook_ids=False, quantize_denoised=False, return_x0=False,
+ temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None):
+ b, *_, device = *x.shape, x.device
+ outputs = self.p_mean_variance(x=x, c=c, t=t, clip_denoised=clip_denoised,
+ return_codebook_ids=return_codebook_ids,
+ quantize_denoised=quantize_denoised,
+ return_x0=return_x0,
+ score_corrector=score_corrector, corrector_kwargs=corrector_kwargs)
+ if return_codebook_ids:
+ raise DeprecationWarning("Support dropped.")
+ model_mean, _, model_log_variance, logits = outputs
+ elif return_x0:
+ model_mean, _, model_log_variance, x0 = outputs
+ else:
+ model_mean, _, model_log_variance = outputs
+
+ noise = noise_like(x.shape, device, repeat_noise) * temperature
+ if noise_dropout > 0.:
+ noise = torch.nn.functional.dropout(noise, p=noise_dropout)
+ # no noise when t == 0
+ nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1)))
+
+ if return_codebook_ids:
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, logits.argmax(dim=1)
+ if return_x0:
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, x0
+ else:
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise
+
+ @torch.no_grad()
+ def progressive_denoising(self, cond, shape, verbose=True, callback=None, quantize_denoised=False,
+ img_callback=None, mask=None, x0=None, temperature=1., noise_dropout=0.,
+ score_corrector=None, corrector_kwargs=None, batch_size=None, x_T=None, start_T=None,
+ log_every_t=None):
+ if not log_every_t:
+ log_every_t = self.log_every_t
+ timesteps = self.num_timesteps
+ if batch_size is not None:
+ b = batch_size if batch_size is not None else shape[0]
+ shape = [batch_size] + list(shape)
+ else:
+ b = batch_size = shape[0]
+ if x_T is None:
+ img = torch.randn(shape, device=self.device)
+ else:
+ img = x_T
+ intermediates = []
+ if cond is not None:
+ if isinstance(cond, dict):
+ cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else
+ list(map(lambda x: x[:batch_size], cond[key])) for key in cond}
+ else:
+ cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size]
+
+ if start_T is not None:
+ timesteps = min(timesteps, start_T)
+ iterator = tqdm(reversed(range(0, timesteps)), desc='Progressive Generation',
+ total=timesteps) if verbose else reversed(
+ range(0, timesteps))
+ if type(temperature) == float:
+ temperature = [temperature] * timesteps
+
+ for i in iterator:
+ ts = torch.full((b,), i, device=self.device, dtype=torch.long)
+ if self.shorten_cond_schedule:
+ assert self.model.conditioning_key != 'hybrid'
+ tc = self.cond_ids[ts].to(cond.device)
+ cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond))
+
+ img, x0_partial = self.p_sample(img, cond, ts,
+ clip_denoised=self.clip_denoised,
+ quantize_denoised=quantize_denoised, return_x0=True,
+ temperature=temperature[i], noise_dropout=noise_dropout,
+ score_corrector=score_corrector, corrector_kwargs=corrector_kwargs)
+ if mask is not None:
+ assert x0 is not None
+ img_orig = self.q_sample(x0, ts)
+ img = img_orig * mask + (1. - mask) * img
+
+ if i % log_every_t == 0 or i == timesteps - 1:
+ intermediates.append(x0_partial)
+ if callback: callback(i)
+ if img_callback: img_callback(img, i)
+ return img, intermediates
+
+ @torch.no_grad()
+ def p_sample_loop(self, cond, shape, return_intermediates=False,
+ x_T=None, verbose=True, callback=None, timesteps=None, quantize_denoised=False,
+ mask=None, x0=None, img_callback=None, start_T=None,
+ log_every_t=None):
+
+ if not log_every_t:
+ log_every_t = self.log_every_t
+ device = self.betas.device
+ b = shape[0]
+ if x_T is None:
+ img = torch.randn(shape, device=device)
+ else:
+ img = x_T
+
+ intermediates = [img]
+ if timesteps is None:
+ timesteps = self.num_timesteps
+
+ if start_T is not None:
+ timesteps = min(timesteps, start_T)
+ iterator = tqdm(reversed(range(0, timesteps)), desc='Sampling t', total=timesteps) if verbose else reversed(
+ range(0, timesteps))
+
+ if mask is not None:
+ assert x0 is not None
+ assert x0.shape[2:3] == mask.shape[2:3] # spatial size has to match
+
+ for i in iterator:
+ ts = torch.full((b,), i, device=device, dtype=torch.long)
+ if self.shorten_cond_schedule:
+ assert self.model.conditioning_key != 'hybrid'
+ tc = self.cond_ids[ts].to(cond.device)
+ cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond))
+ # breakpoint()
+ img = self.p_sample(img, cond, ts,
+ clip_denoised=self.clip_denoised,
+ quantize_denoised=quantize_denoised)
+ if mask is not None:
+ img_orig = self.q_sample(x0, ts)
+ img = img_orig * mask + (1. - mask) * img
+
+ if i % log_every_t == 0 or i == timesteps - 1:
+ intermediates.append(img)
+ if callback: callback(i)
+ if img_callback: img_callback(img, i)
+
+ if return_intermediates:
+ return img, intermediates
+ return img
+
+ @torch.no_grad()
+ def sample(self, cond, batch_size=16, return_intermediates=False, x_T=None,
+ verbose=True, timesteps=None, quantize_denoised=False,
+ mask=None, x0=None, shape=None, **kwargs):
+ if shape is None:
+ shape = (batch_size, self.channels, self.image_size, self.image_size)
+ if cond is not None:
+ if isinstance(cond, dict):
+ cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else
+ list(map(lambda x: x[:batch_size], cond[key])) for key in cond}
+ else:
+ cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size]
+ return self.p_sample_loop(cond,
+ shape,
+ return_intermediates=return_intermediates, x_T=x_T,
+ verbose=verbose, timesteps=timesteps, quantize_denoised=quantize_denoised,
+ mask=mask, x0=x0)
+
+ @torch.no_grad()
+ def sample_log(self, cond, batch_size, ddim, ddim_steps, **kwargs):
+ if ddim:
+ ddim_sampler = DDIMSampler(self)
+ # breakpoint()
+ # if self.model.conditioning_key == 'crossattn' or self.model.conditioning_key == 'hybrid':
+ # shape = (self.channels, self.image_size, self.image_size)
+ # else:
+ # shape = ((self.channels)//2, self.image_size, self.image_size)
+ # breakpoint()
+ shape = (16, self.image_size, self.image_size)
+ samples, intermediates = ddim_sampler.sample(ddim_steps, batch_size,
+ shape, cond, verbose=False, **kwargs)
+
+ else:
+ samples, intermediates = self.sample(cond=cond, batch_size=batch_size,
+ return_intermediates=True, **kwargs)
+
+ return samples, intermediates
+
+ @torch.no_grad()
+ def get_unconditional_conditioning(self, batch_size, null_label=None):
+ if null_label is not None:
+ xc = null_label
+ if isinstance(xc, ListConfig):
+ xc = list(xc)
+ if isinstance(xc, dict) or isinstance(xc, list):
+ c = self.get_learned_conditioning(xc)
+ else:
+ if hasattr(xc, "to"):
+ xc = xc.to(self.device)
+ c = self.get_learned_conditioning(xc)
+ else:
+ if self.cond_stage_key in ["class_label", "cls"]:
+ xc = self.cond_stage_model.get_unconditional_conditioning(batch_size, device=self.device)
+ return self.get_learned_conditioning(xc)
+ else:
+ raise NotImplementedError("todo")
+ if isinstance(c, list): # in case the encoder gives us a list
+ for i in range(len(c)):
+ c[i] = repeat(c[i], '1 ... -> b ...', b=batch_size).to(self.device)
+ else:
+ c = repeat(c, '1 ... -> b ...', b=batch_size).to(self.device)
+ return c
+
+ @torch.no_grad()
+ def log_images(self, batch, N=32, n_row=4, sample=True, ddim_steps=20, ddim_eta=0., return_keys=None,
+ quantize_denoised=True, inpaint=True, plot_denoise_rows=False, plot_progressive_rows=True,
+ plot_diffusion_rows=True, unconditional_guidance_scale=1., unconditional_guidance_label=None,
+ use_ema_scope=True,
+ **kwargs):
+ ema_scope = self.ema_scope if use_ema_scope else nullcontext
+ use_ddim = ddim_steps is not None
+
+ plot_diffusion_rows = False
+ plot_progressive_rows = False
+ inpaint = False
+
+ log = dict()
+
+ z, c, x, xrec, xc = self.get_input(batch, self.first_stage_key,
+ return_first_stage_outputs=True,
+ force_c_encode=True,
+ return_original_cond=True,
+ # bs=N
+ )
+ N = x.shape[0]
+ # N = min(x.shape[0], N)
+ n_row = min(x.shape[0], n_row)
+ # breakpoint()
+ log["inputs"] = x
+ log["reconstruction"] = xrec
+ # if self.model.conditioning_key is not None:
+ # if hasattr(self.cond_stage_model, "decode"):
+ # # xc = self.cond_stage_model.decode(c)
+ # if c.shape[1] == 8:
+ # xc = self.decode_first_stage(c[:,:4])
+ # elif c.shape[1] == 6:
+ # xc = self.decode_first_stage(c[:, :3])
+ # else:
+ # xc = self.decode_first_stage(c)
+ # log["conditioning"] = xc
+ # elif self.cond_stage_key in ["caption", "txt"]:
+ # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch[self.cond_stage_key], size=x.shape[2] // 25)
+ # log["conditioning"] = xc
+ # elif self.cond_stage_key in ['class_label', "cls"]:
+ # try:
+ # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch["human_label"], size=x.shape[2] // 25)
+ # log['conditioning'] = xc
+ # except KeyError:
+ # # probably no "human_label" in batch
+ # pass
+ # elif isimage(xc):
+ # log["conditioning"] = xc
+ # if ismap(xc):
+ # log["original_conditioning"] = self.to_rgb(xc)
+
+ if plot_diffusion_rows:
+ # get diffusion row
+ diffusion_row = list()
+ z_start = z[:n_row]
+ for t in range(self.num_timesteps):
+ if t % self.log_every_t == 0 or t == self.num_timesteps - 1:
+ t = repeat(torch.tensor([t]), '1 -> b', b=n_row)
+ t = t.to(self.device).long()
+ noise = torch.randn_like(z_start)
+ z_noisy = self.q_sample(x_start=z_start, t=t, noise=noise)
+ diffusion_row.append(self.decode_first_stage(z_noisy))
+
+ diffusion_row = torch.stack(diffusion_row) # n_log_step, n_row, C, H, W
+ diffusion_grid = rearrange(diffusion_row, 'n b c h w -> b n c h w')
+ diffusion_grid = rearrange(diffusion_grid, 'b n c h w -> (b n) c h w')
+ diffusion_grid = make_grid(diffusion_grid, nrow=diffusion_row.shape[0])
+ log["diffusion_row"] = diffusion_grid
+
+ # breakpoint()
+ if sample:
+ # get denoise row
+ with ema_scope("Sampling"):
+ # breakpoint()
+ samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim,
+ ddim_steps=ddim_steps, eta=ddim_eta)
+ # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True)
+ x_samples = self.decode_first_stage(samples)
+ log["samples"] = x_samples
+ if plot_denoise_rows:
+ denoise_grid = self._get_denoise_row_from_list(z_denoise_row)
+ log["denoise_row"] = denoise_grid
+
+ if quantize_denoised and not isinstance(self.first_stage_model, AutoencoderKL) and not isinstance(
+ self.first_stage_model, IdentityFirstStage):
+ # also display when quantizing x0 while sampling
+ with ema_scope("Plotting Quantized Denoised"):
+ samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim,
+ ddim_steps=ddim_steps, eta=ddim_eta,
+ quantize_denoised=True)
+ # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True,
+ # quantize_denoised=True)
+ x_samples = self.decode_first_stage(samples.to(self.device))
+ log["samples_x0_quantized"] = x_samples
+
+ if unconditional_guidance_scale > 1.0:
+ uc = self.get_unconditional_conditioning(N, unconditional_guidance_label)
+ if self.model.conditioning_key == "crossattn-adm":
+ uc = {"c_crossattn": [uc], "c_adm": c["c_adm"]}
+ with ema_scope("Sampling with classifier-free guidance"):
+ samples_cfg, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim,
+ ddim_steps=ddim_steps, eta=ddim_eta,
+ unconditional_guidance_scale=unconditional_guidance_scale,
+ unconditional_conditioning=uc,
+ )
+ x_samples_cfg = self.decode_first_stage(samples_cfg)
+ log[f"samples_cfg_scale_{unconditional_guidance_scale:.2f}"] = x_samples_cfg
+
+ if inpaint:
+ # make a simple center square
+ b, h, w = z.shape[0], z.shape[2], z.shape[3]
+ mask = torch.ones(N, h, w).to(self.device)
+ # zeros will be filled in
+ mask[:, h // 4:3 * h // 4, w // 4:3 * w // 4] = 0.
+ mask = mask[:, None, ...]
+ with ema_scope("Plotting Inpaint"):
+ samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta,
+ ddim_steps=ddim_steps, x0=z[:N], mask=mask)
+ x_samples = self.decode_first_stage(samples.to(self.device))
+ log["samples_inpainting"] = x_samples
+ log["mask"] = mask
+
+ # outpaint
+ mask = 1. - mask
+ with ema_scope("Plotting Outpaint"):
+ samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta,
+ ddim_steps=ddim_steps, x0=z[:N], mask=mask)
+ x_samples = self.decode_first_stage(samples.to(self.device))
+ log["samples_outpainting"] = x_samples
+
+ if plot_progressive_rows:
+ with ema_scope("Plotting Progressives"):
+ img, progressives = self.progressive_denoising(c,
+ shape=(self.channels, self.image_size, self.image_size),
+ batch_size=N)
+ prog_row = self._get_denoise_row_from_list(progressives, desc="Progressive Generation")
+ log["progressive_row"] = prog_row
+
+ if return_keys:
+ if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0:
+ return log
+ else:
+ return {key: log[key] for key in return_keys}
+ return log
+
+ def configure_optimizers(self):
+ lr = self.learning_rate
+ params = list(self.model.parameters())
+ if self.cond_stage_trainable:
+ print(f"{self.__class__.__name__}: Also optimizing conditioner params!")
+ params = params + list(self.cond_stage_model.parameters())
+ if self.learn_logvar:
+ print('Diffusion model optimizing logvar')
+ params.append(self.logvar)
+ opt = torch.optim.AdamW(params, lr=lr)
+ if self.use_scheduler:
+ assert 'target' in self.scheduler_config
+ scheduler = instantiate_from_config(self.scheduler_config)
+
+ print("Setting up LambdaLR scheduler...")
+ scheduler = [
+ {
+ 'scheduler': LambdaLR(opt, lr_lambda=scheduler.schedule),
+ 'interval': 'step',
+ 'frequency': 1
+ }]
+ return [opt], scheduler
+ return opt
+
+ @torch.no_grad()
+ def to_rgb(self, x):
+ x = x.float()
+ if not hasattr(self, "colorize"):
+ self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x)
+ x = nn.functional.conv2d(x, weight=self.colorize)
+ x = 2. * (x - x.min()) / (x.max() - x.min()) - 1.
+ return x
+
+
+class DiffusionWrapper(pl.LightningModule):
+ def __init__(self, diff_model_config, conditioning_key):
+ super().__init__()
+ self.sequential_cross_attn = diff_model_config.pop("sequential_crossattn", False)
+ self.diffusion_model = instantiate_from_config(diff_model_config)
+ self.conditioning_key = conditioning_key
+ assert self.conditioning_key in [None, 'concat', 'crossattn', 'hybrid', 'adm', 'hybrid-adm', 'crossattn-adm']
+
+ def forward(self, x, t, c_concat: list = None, c_crossattn: list = None, c_adm=None):
+ # breakpoint()
+ if self.conditioning_key is None:
+ out = self.diffusion_model(x, t)
+ elif self.conditioning_key == 'concat':
+ xc = torch.cat([x] + c_concat, dim=1)
+ out = self.diffusion_model(xc, t)
+ elif self.conditioning_key == 'crossattn':
+ # breakpoint()
+ xc = torch.cat([x] + [c_concat], dim=1)
+ cc = torch.cat([c_crossattn], 1)
+ out = self.diffusion_model(xc, t, context=cc)
+ elif self.conditioning_key == 'hybrid':
+ xc = torch.cat([x] + c_crossattn, dim=1)
+ cc = torch.cat(c_crossattn, 1)
+ out = self.diffusion_model(xc, t, context=cc)
+ elif self.conditioning_key == 'hybrid-adm':
+ assert c_adm is not None
+ xc = torch.cat([x] + c_concat, dim=1)
+ cc = torch.cat(c_crossattn, 1)
+ out = self.diffusion_model(xc, t, context=cc, y=c_adm)
+ elif self.conditioning_key == 'crossattn-adm':
+ assert c_adm is not None
+ cc = torch.cat(c_crossattn, 1)
+ out = self.diffusion_model(x, t, context=cc, y=c_adm)
+ elif self.conditioning_key == 'adm':
+ cc = c_crossattn[0]
+ out = self.diffusion_model(x, t, y=cc)
+ else:
+ raise NotImplementedError()
+
+ return out
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_pseudo3D.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_pseudo3D.py
new file mode 100644
index 0000000000000000000000000000000000000000..fb42735f1851b9e50450ea481657fbeddcdaea54
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_pseudo3D.py
@@ -0,0 +1,1463 @@
+"""
+wild mixture of
+https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py
+https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py
+https://github.com/CompVis/taming-transformers
+-- merci
+"""
+
+import torch
+import torch.nn as nn
+import numpy as np
+import pytorch_lightning as pl
+from torch.optim.lr_scheduler import LambdaLR
+from einops import rearrange, repeat
+from contextlib import contextmanager, nullcontext
+from functools import partial
+import itertools
+from tqdm import tqdm
+from torchvision.utils import make_grid
+from pytorch_lightning.utilities.distributed import rank_zero_only
+from omegaconf import ListConfig
+
+from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config
+from ldm.modules.ema import LitEma
+from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution
+from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL
+from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like
+from ldm.models.diffusion.ddim import DDIMSampler
+from transformers import BertTokenizer,BertModel
+
+
+__conditioning_keys__ = {'concat': 'c_concat',
+ 'crossattn': 'c_crossattn',
+ 'adm': 'y'}
+
+weights = [2000 - i for i in range(1000)]
+weights = torch.tensor(weights, dtype=torch.float)
+
+def disabled_train(self, mode=True):
+ """Overwrite model.train with this function to make sure train/eval mode
+ does not change anymore."""
+ return self
+
+
+def uniform_on_device(r1, r2, shape, device):
+ return (r1 - r2) * torch.rand(*shape, device=device) + r2
+
+
+class DDPM(pl.LightningModule):
+ # classic DDPM with Gaussian diffusion, in image space
+ def __init__(self,
+ unet_config,
+ timesteps=1000,
+ beta_schedule="linear",
+ loss_type="l2",
+ ckpt_path=None,
+ ignore_keys=[],
+ load_only_unet=False,
+ monitor="val/loss",
+ use_ema=True,
+ first_stage_key="image",
+ image_size=256,
+ channels=3,
+ log_every_t=100,
+ clip_denoised=True,
+ linear_start=1e-4,
+ linear_end=2e-2,
+ cosine_s=8e-3,
+ given_betas=None,
+ original_elbo_weight=0.,
+ v_posterior=0., # weight for choosing posterior variance as sigma = (1-v) * beta_tilde + v * beta
+ l_simple_weight=1.,
+ conditioning_key=None,
+ parameterization="eps", # all assuming fixed variance schedules
+ scheduler_config=None,
+ use_positional_encodings=False,
+ learn_logvar=False,
+ logvar_init=0.,
+ make_it_fit=False,
+ ucg_training=None,
+ reset_ema=False,
+ reset_num_ema_updates=False,
+ ):
+ super().__init__()
+ assert parameterization in ["eps", "x0", "v"], 'currently only supporting "eps" and "x0" and "v"'
+ self.parameterization = parameterization
+ print(f"{self.__class__.__name__}: Running in {self.parameterization}-prediction mode")
+ self.cond_stage_model = None
+ self.clip_denoised = clip_denoised
+ self.log_every_t = log_every_t
+ self.first_stage_key = first_stage_key
+ self.image_size = image_size # try conv?
+ self.channels = channels
+ self.use_positional_encodings = use_positional_encodings
+ self.model = DiffusionWrapper(unet_config, conditioning_key)
+ count_params(self.model, verbose=True)
+ self.use_ema = use_ema
+ if self.use_ema:
+ self.model_ema = LitEma(self.model)
+ print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.")
+
+ self.use_scheduler = scheduler_config is not None
+ if self.use_scheduler:
+ self.scheduler_config = scheduler_config
+
+ self.v_posterior = v_posterior
+ self.original_elbo_weight = original_elbo_weight
+ self.l_simple_weight = l_simple_weight
+
+ if monitor is not None:
+ self.monitor = monitor
+ self.make_it_fit = make_it_fit
+ if reset_ema: assert exists(ckpt_path)
+ if ckpt_path is not None:
+ self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys, only_model=load_only_unet)
+ if reset_ema:
+ assert self.use_ema
+ print(f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.")
+ self.model_ema = LitEma(self.model)
+ if reset_num_ema_updates:
+ print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ")
+ assert self.use_ema
+ self.model_ema.reset_num_updates()
+
+ self.register_schedule(given_betas=given_betas, beta_schedule=beta_schedule, timesteps=timesteps,
+ linear_start=linear_start, linear_end=linear_end, cosine_s=cosine_s)
+
+ self.loss_type = loss_type
+
+ self.learn_logvar = learn_logvar
+ logvar = torch.full(fill_value=logvar_init, size=(self.num_timesteps,))
+ if self.learn_logvar:
+ self.logvar = nn.Parameter(self.logvar, requires_grad=True)
+ else:
+ self.register_buffer('logvar', logvar)
+
+ self.ucg_training = ucg_training or dict()
+ if self.ucg_training:
+ self.ucg_prng = np.random.RandomState()
+
+ def register_schedule(self, given_betas=None, beta_schedule="linear", timesteps=1000,
+ linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3):
+ if exists(given_betas):
+ betas = given_betas
+ else:
+ betas = make_beta_schedule(beta_schedule, timesteps, linear_start=linear_start, linear_end=linear_end,
+ cosine_s=cosine_s)
+ alphas = 1. - betas
+ alphas_cumprod = np.cumprod(alphas, axis=0)
+ alphas_cumprod_prev = np.append(1., alphas_cumprod[:-1])
+
+ timesteps, = betas.shape
+ self.num_timesteps = int(timesteps)
+ self.linear_start = linear_start
+ self.linear_end = linear_end
+ assert alphas_cumprod.shape[0] == self.num_timesteps, 'alphas have to be defined for each timestep'
+
+ to_torch = partial(torch.tensor, dtype=torch.float32)
+
+ self.register_buffer('betas', to_torch(betas))
+ self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod))
+ self.register_buffer('alphas_cumprod_prev', to_torch(alphas_cumprod_prev))
+
+ # calculations for diffusion q(x_t | x_{t-1}) and others
+ self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod)))
+ self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod)))
+ self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod)))
+ self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod)))
+ self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod - 1)))
+
+ # calculations for posterior q(x_{t-1} | x_t, x_0)
+ posterior_variance = (1 - self.v_posterior) * betas * (1. - alphas_cumprod_prev) / (
+ 1. - alphas_cumprod) + self.v_posterior * betas
+ # above: equal to 1. / (1. / (1. - alpha_cumprod_tm1) + alpha_t / beta_t)
+ self.register_buffer('posterior_variance', to_torch(posterior_variance))
+ # below: log calculation clipped because the posterior variance is 0 at the beginning of the diffusion chain
+ self.register_buffer('posterior_log_variance_clipped', to_torch(np.log(np.maximum(posterior_variance, 1e-20))))
+ self.register_buffer('posterior_mean_coef1', to_torch(
+ betas * np.sqrt(alphas_cumprod_prev) / (1. - alphas_cumprod)))
+ self.register_buffer('posterior_mean_coef2', to_torch(
+ (1. - alphas_cumprod_prev) * np.sqrt(alphas) / (1. - alphas_cumprod)))
+
+ if self.parameterization == "eps":
+ lvlb_weights = self.betas ** 2 / (
+ 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod))
+ elif self.parameterization == "x0":
+ lvlb_weights = 0.5 * np.sqrt(torch.Tensor(alphas_cumprod)) / (2. * 1 - torch.Tensor(alphas_cumprod))
+ elif self.parameterization == "v":
+ lvlb_weights = torch.ones_like(self.betas ** 2 / (
+ 2 * self.posterior_variance * to_torch(alphas) * (1 - self.alphas_cumprod)))
+ else:
+ raise NotImplementedError("mu not supported")
+ lvlb_weights[0] = lvlb_weights[1]
+ self.register_buffer('lvlb_weights', lvlb_weights, persistent=False)
+ assert not torch.isnan(self.lvlb_weights).all()
+
+ @contextmanager
+ def ema_scope(self, context=None):
+ if self.use_ema:
+ self.model_ema.store(self.model.parameters())
+ self.model_ema.copy_to(self.model)
+ if context is not None:
+ print(f"{context}: Switched to EMA weights")
+ try:
+ yield None
+ finally:
+ if self.use_ema:
+ self.model_ema.restore(self.model.parameters())
+ if context is not None:
+ print(f"{context}: Restored training weights")
+
+ @torch.no_grad()
+ def init_from_ckpt(self, path, ignore_keys=list(), only_model=False):
+ sd = torch.load(path, map_location="cpu")
+ if "state_dict" in list(sd.keys()):
+ sd = sd["state_dict"]
+ keys = list(sd.keys())
+ for k in keys:
+ for ik in ignore_keys:
+ if k.startswith(ik):
+ print("Deleting key {} from state_dict.".format(k))
+ del sd[k]
+ if self.make_it_fit:
+ n_params = len([name for name, _ in
+ itertools.chain(self.named_parameters(),
+ self.named_buffers())])
+ for name, param in tqdm(
+ itertools.chain(self.named_parameters(),
+ self.named_buffers()),
+ desc="Fitting old weights to new weights",
+ total=n_params
+ ):
+ if not name in sd:
+ continue
+ old_shape = sd[name].shape
+ new_shape = param.shape
+ assert len(old_shape) == len(new_shape)
+ if len(new_shape) > 2:
+ # we only modify first two axes
+ assert new_shape[2:] == old_shape[2:]
+ # assumes first axis corresponds to output dim
+ if not new_shape == old_shape:
+ new_param = param.clone()
+ old_param = sd[name]
+ if len(new_shape) == 1:
+ for i in range(new_param.shape[0]):
+ new_param[i] = old_param[i % old_shape[0]]
+ elif len(new_shape) >= 2:
+ for i in range(new_param.shape[0]):
+ for j in range(new_param.shape[1]):
+ new_param[i, j] = old_param[i % old_shape[0], j % old_shape[1]]
+
+ n_used_old = torch.ones(old_shape[1])
+ for j in range(new_param.shape[1]):
+ n_used_old[j % old_shape[1]] += 1
+ n_used_new = torch.zeros(new_shape[1])
+ for j in range(new_param.shape[1]):
+ n_used_new[j] = n_used_old[j % old_shape[1]]
+
+ n_used_new = n_used_new[None, :]
+ while len(n_used_new.shape) < len(new_shape):
+ n_used_new = n_used_new.unsqueeze(-1)
+ new_param /= n_used_new
+
+ sd[name] = new_param
+
+ missing, unexpected = self.load_state_dict(sd, strict=False) if not only_model else self.model.load_state_dict(
+ sd, strict=False)
+ print(f"Restored from {path} with {len(missing)} missing and {len(unexpected)} unexpected keys")
+ if len(missing) > 0:
+ print(f"Missing Keys:\n {missing}")
+ if len(unexpected) > 0:
+ print(f"\nUnexpected Keys:\n {unexpected}")
+
+ def q_mean_variance(self, x_start, t):
+ """
+ Get the distribution q(x_t | x_0).
+ :param x_start: the [N x C x ...] tensor of noiseless inputs.
+ :param t: the number of diffusion steps (minus 1). Here, 0 means one step.
+ :return: A tuple (mean, variance, log_variance), all of x_start's shape.
+ """
+ mean = (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start)
+ variance = extract_into_tensor(1.0 - self.alphas_cumprod, t, x_start.shape)
+ log_variance = extract_into_tensor(self.log_one_minus_alphas_cumprod, t, x_start.shape)
+ return mean, variance, log_variance
+
+ def predict_start_from_noise(self, x_t, t, noise):
+ return (
+ extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t -
+ extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) * noise
+ )
+
+ def predict_start_from_z_and_v(self, x_t, t, v):
+ # self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod)))
+ # self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod)))
+ return (
+ extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * x_t -
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * v
+ )
+
+ def predict_eps_from_z_and_v(self, x_t, t, v):
+ return (
+ extract_into_tensor(self.sqrt_alphas_cumprod, t, x_t.shape) * v +
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_t.shape) * x_t
+ )
+
+ def q_posterior(self, x_start, x_t, t):
+ posterior_mean = (
+ extract_into_tensor(self.posterior_mean_coef1, t, x_t.shape) * x_start +
+ extract_into_tensor(self.posterior_mean_coef2, t, x_t.shape) * x_t
+ )
+ posterior_variance = extract_into_tensor(self.posterior_variance, t, x_t.shape)
+ posterior_log_variance_clipped = extract_into_tensor(self.posterior_log_variance_clipped, t, x_t.shape)
+ return posterior_mean, posterior_variance, posterior_log_variance_clipped
+
+ def p_mean_variance(self, x, t, clip_denoised: bool):
+ model_out = self.model(x, t)
+ if self.parameterization == "eps":
+ x_recon = self.predict_start_from_noise(x, t=t, noise=model_out)
+ elif self.parameterization == "x0":
+ x_recon = model_out
+ if clip_denoised:
+ x_recon.clamp_(-1., 1.)
+
+ model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t)
+ return model_mean, posterior_variance, posterior_log_variance
+
+ @torch.no_grad()
+ def p_sample(self, x, t, clip_denoised=True, repeat_noise=False):
+ b, *_, device = *x.shape, x.device
+ model_mean, _, model_log_variance = self.p_mean_variance(x=x, t=t, clip_denoised=clip_denoised)
+ noise = noise_like(x.shape, device, repeat_noise)
+ # no noise when t == 0
+ nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1)))
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise
+
+ @torch.no_grad()
+ def p_sample_loop(self, shape, return_intermediates=False):
+ device = self.betas.device
+ b = shape[0]
+ img = torch.randn(shape, device=device)
+ intermediates = [img]
+ for i in tqdm(reversed(range(0, self.num_timesteps)), desc='Sampling t', total=self.num_timesteps):
+ img = self.p_sample(img, torch.full((b,), i, device=device, dtype=torch.long),
+ clip_denoised=self.clip_denoised)
+ if i % self.log_every_t == 0 or i == self.num_timesteps - 1:
+ intermediates.append(img)
+ if return_intermediates:
+ return img, intermediates
+ return img
+
+ @torch.no_grad()
+ def sample(self, batch_size=16, return_intermediates=False):
+ image_size = self.image_size
+ channels = self.channels
+ return self.p_sample_loop((batch_size, channels, image_size, image_size),
+ return_intermediates=return_intermediates)
+
+ def q_sample(self, x_start, t, noise=None):
+ noise = default(noise, lambda: torch.randn_like(x_start))
+ # breakpoint()
+ return (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start +
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise)
+
+ def get_v(self, x, noise, t):
+ return (
+ extract_into_tensor(self.sqrt_alphas_cumprod, t, x.shape) * noise -
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x.shape) * x
+ )
+
+ def get_loss(self, pred, target, mean=True):
+ if self.loss_type == 'l1':
+ loss = (target - pred).abs()
+ if mean:
+ loss = loss.mean()
+ elif self.loss_type == 'l2':
+ if mean:
+ loss = torch.nn.functional.mse_loss(target, pred)
+ else:
+ loss = torch.nn.functional.mse_loss(target, pred, reduction='none')
+ else:
+ raise NotImplementedError("unknown loss type '{loss_type}'")
+
+ return loss
+
+ def p_losses(self, x_start, t, noise=None):
+ noise = default(noise, lambda: torch.randn_like(x_start))
+ x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise)
+ model_out = self.model(x_noisy, t)
+
+ loss_dict = {}
+ if self.parameterization == "eps":
+ target = noise
+ elif self.parameterization == "x0":
+ target = x_start
+ elif self.parameterization == "v":
+ target = self.get_v(x_start, noise, t)
+ else:
+ raise NotImplementedError(f"Parameterization {self.parameterization} not yet supported")
+
+ loss = self.get_loss(model_out, target, mean=False).mean(dim=[1, 2, 3])
+
+ log_prefix = 'train' if self.training else 'val'
+
+ loss_dict.update({f'{log_prefix}/loss_simple': loss.mean()})
+ loss_simple = loss.mean() * self.l_simple_weight
+
+ loss_vlb = (self.lvlb_weights[t] * loss).mean()
+ loss_dict.update({f'{log_prefix}/loss_vlb': loss_vlb})
+
+ loss = loss_simple + self.original_elbo_weight * loss_vlb
+
+ loss_dict.update({f'{log_prefix}/loss': loss})
+
+ return loss, loss_dict
+
+ def forward(self, x, *args, **kwargs):
+ # b, c, h, w, device, img_size, = *x.shape, x.device, self.image_size
+ # assert h == img_size and w == img_size, f'height and width of image must be {img_size}'
+ t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long()
+ return self.p_losses(x, t, *args, **kwargs)
+
+ def get_input(self, batch, k):
+ x = batch[k]
+ if len(x.shape) == 3:
+ x = x[..., None]
+ x = rearrange(x, 'b h w c -> b c h w')
+ x = x.to(memory_format=torch.contiguous_format).float()
+ return x
+
+ def shared_step(self, batch):
+ x = self.get_input(batch, self.first_stage_key)
+ loss, loss_dict = self(x)
+ return loss, loss_dict
+
+ def training_step(self, batch, batch_idx):
+ for k in self.ucg_training:
+ p = self.ucg_training[k]["p"]
+ val = self.ucg_training[k]["val"]
+ if val is None:
+ val = ""
+ for i in range(len(batch[k])):
+ if self.ucg_prng.choice(2, p=[1 - p, p]):
+ batch[k][i] = val
+
+ loss, loss_dict = self.shared_step(batch)
+
+ self.log_dict(loss_dict, prog_bar=True,
+ logger=True, on_step=True, on_epoch=True)
+
+ self.log("global_step", self.global_step,
+ prog_bar=True, logger=True, on_step=True, on_epoch=False)
+
+ if self.use_scheduler:
+ lr = self.optimizers().param_groups[0]['lr']
+ self.log('lr_abs', lr, prog_bar=True, logger=True, on_step=True, on_epoch=False)
+
+ return loss
+
+ @torch.no_grad()
+ def validation_step(self, batch, batch_idx):
+ _, loss_dict_no_ema = self.shared_step(batch)
+ with self.ema_scope():
+ _, loss_dict_ema = self.shared_step(batch)
+ loss_dict_ema = {key + '_ema': loss_dict_ema[key] for key in loss_dict_ema}
+ self.log_dict(loss_dict_no_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True)
+ self.log_dict(loss_dict_ema, prog_bar=False, logger=True, on_step=False, on_epoch=True)
+
+ def on_train_batch_end(self, *args, **kwargs):
+ if self.use_ema:
+ self.model_ema(self.model)
+
+ def _get_rows_from_list(self, samples):
+ n_imgs_per_row = len(samples)
+ denoise_grid = rearrange(samples, 'n b c h w -> b n c h w')
+ denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w')
+ denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row)
+ return denoise_grid
+
+ @torch.no_grad()
+ def log_images(self, batch, N=8, n_row=2, sample=True, return_keys=None, **kwargs):
+ log = dict()
+ x = self.get_input(batch, self.first_stage_key)
+ N = min(x.shape[0], N)
+ n_row = min(x.shape[0], n_row)
+ x = x.to(self.device)[:N]
+ log["inputs"] = x
+
+ # get diffusion row
+ diffusion_row = list()
+ x_start = x[:n_row]
+
+ for t in range(self.num_timesteps):
+ if t % self.log_every_t == 0 or t == self.num_timesteps - 1:
+ t = repeat(torch.tensor([t]), '1 -> b', b=n_row)
+ t = t.to(self.device).long()
+ noise = torch.randn_like(x_start)
+ x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise)
+ diffusion_row.append(x_noisy)
+
+ log["diffusion_row"] = self._get_rows_from_list(diffusion_row)
+
+ if sample:
+ # get denoise row
+ with self.ema_scope("Plotting"):
+ samples, denoise_row = self.sample(batch_size=N, return_intermediates=True)
+
+ log["samples"] = samples
+ log["denoise_row"] = self._get_rows_from_list(denoise_row)
+
+ if return_keys:
+ if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0:
+ return log
+ else:
+ return {key: log[key] for key in return_keys}
+ return log
+
+ def configure_optimizers(self):
+ lr = self.learning_rate
+ params = list(self.model.parameters())
+ if self.learn_logvar:
+ params = params + [self.logvar]
+ opt = torch.optim.AdamW(params, lr=lr)
+ return opt
+
+
+class LatentDiffusion(DDPM):
+ """main class"""
+
+ def __init__(self,
+ num_timesteps_cond=None,
+ cond_stage_key="image",
+ cond_stage_trainable=False,
+ concat_mode=True,
+ cond_stage_forward=None,
+ conditioning_key=None,
+ scale_factor=1.0,
+ scale_by_std=False,
+ force_null_conditioning=False,
+ fix_t=False,
+ text_enc='custom',
+ *args, **kwargs):
+ self.force_null_conditioning = force_null_conditioning
+ self.num_timesteps_cond = default(num_timesteps_cond, 1)
+ self.scale_by_std = scale_by_std
+ assert self.num_timesteps_cond <= kwargs['timesteps']
+ # for backwards compatibility after implementation of DiffusionWrapper
+ if conditioning_key is None:
+ conditioning_key = 'concat' if concat_mode else 'crossattn'
+
+ ckpt_path = kwargs.pop("ckpt_path", None)
+ reset_ema = kwargs.pop("reset_ema", False)
+ reset_num_ema_updates = kwargs.pop("reset_num_ema_updates", False)
+ ignore_keys = kwargs.pop("ignore_keys", [])
+ super().__init__(conditioning_key=conditioning_key, *args, **kwargs)
+ self.concat_mode = concat_mode
+ self.cond_stage_trainable = cond_stage_trainable
+ self.cond_stage_key = cond_stage_key
+
+ if not scale_by_std:
+ self.scale_factor = scale_factor
+ else:
+ self.register_buffer('scale_factor', torch.tensor(scale_factor))
+ self.instantiate_first_stage()
+ # self.instantiate_cond_stage()
+ self.cond_stage_forward = cond_stage_forward
+ self.clip_denoised = False
+ self.bbox_tokenizer = None
+ self.tokenizer=BertTokenizer.from_pretrained('microsoft/BiomedVLP-CXR-BERT-specialized',do_lower_case=True)
+ self.text_encode_without_mask=False
+ self.text_transformer=BertModel.from_pretrained("microsoft/BiomedVLP-CXR-BERT-specialized")
+
+ self.restarted_from_ckpt = False
+ if ckpt_path is not None:
+ self.init_from_ckpt(ckpt_path, ignore_keys)
+ self.restarted_from_ckpt = True
+ if reset_ema:
+ assert self.use_ema
+ print(
+ f"Resetting ema to pure model weights. This is useful when restoring from an ema-only checkpoint.")
+ self.model_ema = LitEma(self.model)
+ if reset_num_ema_updates:
+ print(" +++++++++++ WARNING: RESETTING NUM_EMA UPDATES TO ZERO +++++++++++ ")
+ assert self.use_ema
+ self.model_ema.reset_num_updates()
+
+ self.fix_t = fix_t
+
+ def make_cond_schedule(self, ):
+ self.cond_ids = torch.full(size=(self.num_timesteps,), fill_value=self.num_timesteps - 1, dtype=torch.long)
+ ids = torch.round(torch.linspace(0, self.num_timesteps - 1, self.num_timesteps_cond)).long()
+ self.cond_ids[:self.num_timesteps_cond] = ids
+
+ @rank_zero_only
+ @torch.no_grad()
+ def on_train_batch_start(self, batch, batch_idx, dataloader_idx):
+ # only for very first batch
+ if self.scale_by_std and self.current_epoch == 0 and self.global_step == 0 and batch_idx == 0 and not self.restarted_from_ckpt:
+ assert self.scale_factor == 1., 'rather not use custom rescaling and std-rescaling simultaneously'
+ # set rescale weight to 1./std of encodings
+ print("### USING STD-RESCALING ###")
+ x = super().get_input(batch, self.first_stage_key)
+ x = x.to(self.device)
+ encoder_posterior = self.encode_first_stage(x)
+ z = self.get_first_stage_encoding(encoder_posterior).detach()
+ del self.scale_factor
+ self.register_buffer('scale_factor', 1. / z.flatten().std())
+ print(f"setting self.scale_factor to {self.scale_factor}")
+ print("### USING STD-RESCALING ###")
+
+ def register_schedule(self,
+ given_betas=None, beta_schedule="linear", timesteps=1000,
+ linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3):
+ super().register_schedule(given_betas, beta_schedule, timesteps, linear_start, linear_end, cosine_s)
+
+ self.shorten_cond_schedule = self.num_timesteps_cond > 1
+ if self.shorten_cond_schedule:
+ self.make_cond_schedule()
+
+ def instantiate_first_stage(self):
+ from LeanVAE import LeanVAE
+ vqgan_ckpt='LeanVAE/ckpts/LeanVAE-dim16.ckpt'
+ model = LeanVAE.load_from_checkpoint(vqgan_ckpt, strict=False)
+ self.first_stage_model = model.eval()
+ self.first_stage_model.train = disabled_train
+ for param in self.first_stage_model.parameters():
+ param.requires_grad = False
+
+ def instantiate_cond_stage(self, config):
+ if not self.cond_stage_trainable:
+ if config == "__is_first_stage__":
+ print("Using first stage also as cond stage.")
+ self.cond_stage_model = self.first_stage_model
+ elif config == "__is_unconditional__":
+ print(f"Training {self.__class__.__name__} as an unconditional model.")
+ self.cond_stage_model = None
+ # self.be_unconditional = True
+ else:
+ model = instantiate_from_config(config)
+ self.cond_stage_model = model.eval()
+ self.cond_stage_model.train = disabled_train
+ for param in self.cond_stage_model.parameters():
+ param.requires_grad = False
+ else:
+ assert config != '__is_first_stage__'
+ assert config != '__is_unconditional__'
+ model = instantiate_from_config(config)
+ self.cond_stage_model = model
+
+ def _get_denoise_row_from_list(self, samples, desc='', force_no_decoder_quantization=False):
+ denoise_row = []
+ for zd in tqdm(samples, desc=desc):
+ denoise_row.append(self.decode_first_stage(zd.to(self.device),
+ force_not_quantize=force_no_decoder_quantization))
+ n_imgs_per_row = len(denoise_row)
+ denoise_row = torch.stack(denoise_row) # n_log_step, n_row, C, H, W
+ denoise_grid = rearrange(denoise_row, 'n b c h w -> b n c h w')
+ denoise_grid = rearrange(denoise_grid, 'b n c h w -> (b n) c h w')
+ denoise_grid = make_grid(denoise_grid, nrow=n_imgs_per_row)
+ return denoise_grid
+
+ def get_first_stage_encoding(self, encoder_posterior):
+ if isinstance(encoder_posterior, DiagonalGaussianDistribution):
+ z = encoder_posterior.sample()
+ elif isinstance(encoder_posterior, torch.Tensor):
+ z = encoder_posterior
+ else:
+ raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented")
+ return self.scale_factor * z
+
+ def get_learned_conditioning(self, c):
+ if self.cond_stage_forward is None:
+ if hasattr(self.cond_stage_model, 'encode') and callable(self.cond_stage_model.encode):
+ c = self.cond_stage_model.encode(c)
+ if isinstance(c, DiagonalGaussianDistribution):
+ c = c.mode()
+ else:
+ c = self.cond_stage_model(c)
+ else:
+ assert hasattr(self.cond_stage_model, self.cond_stage_forward)
+ c = getattr(self.cond_stage_model, self.cond_stage_forward)(c)
+ return c
+
+ def meshgrid(self, h, w):
+ y = torch.arange(0, h).view(h, 1, 1).repeat(1, w, 1)
+ x = torch.arange(0, w).view(1, w, 1).repeat(h, 1, 1)
+
+ arr = torch.cat([y, x], dim=-1)
+ return arr
+
+ def delta_border(self, h, w):
+ """
+ :param h: height
+ :param w: width
+ :return: normalized distance to image border,
+ wtith min distance = 0 at border and max dist = 0.5 at image center
+ """
+ lower_right_corner = torch.tensor([h - 1, w - 1]).view(1, 1, 2)
+ arr = self.meshgrid(h, w) / lower_right_corner
+ dist_left_up = torch.min(arr, dim=-1, keepdims=True)[0]
+ dist_right_down = torch.min(1 - arr, dim=-1, keepdims=True)[0]
+ edge_dist = torch.min(torch.cat([dist_left_up, dist_right_down], dim=-1), dim=-1)[0]
+ return edge_dist
+
+ def get_weighting(self, h, w, Ly, Lx, device):
+ weighting = self.delta_border(h, w)
+ weighting = torch.clip(weighting, self.split_input_params["clip_min_weight"],
+ self.split_input_params["clip_max_weight"], )
+ weighting = weighting.view(1, h * w, 1).repeat(1, 1, Ly * Lx).to(device)
+
+ if self.split_input_params["tie_braker"]:
+ L_weighting = self.delta_border(Ly, Lx)
+ L_weighting = torch.clip(L_weighting,
+ self.split_input_params["clip_min_tie_weight"],
+ self.split_input_params["clip_max_tie_weight"])
+
+ L_weighting = L_weighting.view(1, 1, Ly * Lx).to(device)
+ weighting = weighting * L_weighting
+ return weighting
+
+ def get_fold_unfold(self, x, kernel_size, stride, uf=1, df=1): # todo load once not every time, shorten code
+ """
+ :param x: img of size (bs, c, h, w)
+ :return: n img crops of size (n, bs, c, kernel_size[0], kernel_size[1])
+ """
+ bs, nc, h, w = x.shape
+
+ # number of crops in image
+ Ly = (h - kernel_size[0]) // stride[0] + 1
+ Lx = (w - kernel_size[1]) // stride[1] + 1
+
+ if uf == 1 and df == 1:
+ fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride)
+ unfold = torch.nn.Unfold(**fold_params)
+
+ fold = torch.nn.Fold(output_size=x.shape[2:], **fold_params)
+
+ weighting = self.get_weighting(kernel_size[0], kernel_size[1], Ly, Lx, x.device).to(x.dtype)
+ normalization = fold(weighting).view(1, 1, h, w) # normalizes the overlap
+ weighting = weighting.view((1, 1, kernel_size[0], kernel_size[1], Ly * Lx))
+
+ elif uf > 1 and df == 1:
+ fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride)
+ unfold = torch.nn.Unfold(**fold_params)
+
+ fold_params2 = dict(kernel_size=(kernel_size[0] * uf, kernel_size[0] * uf),
+ dilation=1, padding=0,
+ stride=(stride[0] * uf, stride[1] * uf))
+ fold = torch.nn.Fold(output_size=(x.shape[2] * uf, x.shape[3] * uf), **fold_params2)
+
+ weighting = self.get_weighting(kernel_size[0] * uf, kernel_size[1] * uf, Ly, Lx, x.device).to(x.dtype)
+ normalization = fold(weighting).view(1, 1, h * uf, w * uf) # normalizes the overlap
+ weighting = weighting.view((1, 1, kernel_size[0] * uf, kernel_size[1] * uf, Ly * Lx))
+
+ elif df > 1 and uf == 1:
+ fold_params = dict(kernel_size=kernel_size, dilation=1, padding=0, stride=stride)
+ unfold = torch.nn.Unfold(**fold_params)
+
+ fold_params2 = dict(kernel_size=(kernel_size[0] // df, kernel_size[0] // df),
+ dilation=1, padding=0,
+ stride=(stride[0] // df, stride[1] // df))
+ fold = torch.nn.Fold(output_size=(x.shape[2] // df, x.shape[3] // df), **fold_params2)
+
+ weighting = self.get_weighting(kernel_size[0] // df, kernel_size[1] // df, Ly, Lx, x.device).to(x.dtype)
+ normalization = fold(weighting).view(1, 1, h // df, w // df) # normalizes the overlap
+ weighting = weighting.view((1, 1, kernel_size[0] // df, kernel_size[1] // df, Ly * Lx))
+
+ else:
+ raise NotImplementedError
+
+ return fold, unfold, normalization, weighting
+
+ @torch.no_grad()
+ def get_input(self, batch, k, return_first_stage_outputs=False, force_c_encode=False,
+ cond_key=None, return_original_cond=False, bs=None, return_x=False):
+ # breakpoint()
+ if k != 'volume_data':
+ x = super().get_input(batch, k)
+ else:
+ x = batch[k]
+ x = x.repeat(1,3,1,1,1)
+ x = x.to(memory_format=torch.contiguous_format).float()
+ if bs is not None:
+ x = x[:bs]
+ x = x.to(self.device)
+ # breakpoint()
+ encoder_posterior = self.encode_first_stage(x)
+ z = self.get_first_stage_encoding(encoder_posterior).detach()
+ z = rearrange(z, 'b c z h w -> (b z) c h w')
+
+ if self.model.conditioning_key is not None and not self.force_null_conditioning:
+ if cond_key is None:
+ cond_key = self.cond_stage_key
+ if cond_key != self.first_stage_key:
+ if cond_key in ['caption', 'coordinates_bbox', "txt"]:
+ xc = batch[cond_key]
+ elif cond_key in ['class_label', 'cls']:
+ xc = batch
+ elif cond_key == 'volume_seg':
+ xc = batch['volume_seg']
+ xc = rearrange(xc, 'b z h w c -> (b z) c h w')
+ xc = xc.repeat(1,3,1,1)
+ if bs is not None:
+ xc = xc[:bs]
+ xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach()
+ xc = xc.to(memory_format=torch.contiguous_format).float()
+ elif cond_key == 'volume_seg_and_text':
+ xc = batch['volume_seg']
+ xc = xc.repeat(1,3,1,1,1)
+
+ if bs is not None:
+ xc = xc[:bs]
+ xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach()
+ z_len=xc.shape[2]
+ xc = rearrange(xc, 'b c z h w -> (b z) c h w')
+ xc = xc.to(memory_format=torch.contiguous_format).float()
+
+ # breakpoint()
+ text = batch['input_text']
+ text = list(text)
+ text_tokens=self.tokenizer(text, return_tensors="pt", padding="max_length", truncation=True, max_length=512).to(self.device)
+ text_embeddings = self.text_transformer(text_tokens.input_ids, attention_mask = text_tokens.attention_mask )
+ enc_text = text_embeddings[0]
+ enc_text=enc_text[:,None]
+ enc_text = enc_text.repeat(1,z_len,1,1)
+ enc_text = rearrange(enc_text, 'b z l c -> (b z) l c')
+ xc={'c_concat': xc, 'c_crossattn': enc_text}
+
+ elif cond_key == 'ref_and_volume_seg':
+ xc1 = batch['volume_seg']
+ slice_num = xc1.shape[1]
+ xc1 = rearrange(xc1, 'b z h w c -> (b z) c h w')
+ xc1 = xc1.repeat(1,3,1,1)
+ if bs is not None:
+ xc1 = xc1[:bs]
+ xc1 = self.get_first_stage_encoding(self.encode_first_stage(xc1)).detach()
+ xc1 = xc1.to(memory_format=torch.contiguous_format).float()
+ xc2 = batch['volume_ref']
+ xc2 = xc2.repeat(1,slice_num,1,1,1)
+ xc2 = rearrange(xc2, 'b z h w c -> (b z) c h w')
+ xc2 = xc2.repeat(1,3,1,1)
+ if bs is not None:
+ xc2 = xc2[:bs]
+ xc2 = self.get_first_stage_encoding(self.encode_first_stage(xc2)).detach()
+ xc2 = xc2.to(memory_format=torch.contiguous_format).float()
+ xc = torch.cat([xc1, xc2], dim=1)
+ elif cond_key == 'masked_volume':
+ xc = batch['masked_data']
+ mask_tumor = batch['tumor_mask']
+ # breakpoint()
+ mask_tumor = rearrange(mask_tumor, 'b z h w c -> (b z) c h w')
+ xc = rearrange(xc, 'b z h w c -> (b z) c h w')
+ xc = xc.repeat(1,3,1,1)
+ if bs is not None:
+ xc = xc[:bs]
+ mask_tumor=mask_tumor[:bs]
+ xc = self.get_first_stage_encoding(self.encode_first_stage(xc)).detach()
+ # breakpoint()
+ xc = torch.cat([xc, mask_tumor], dim=1).detach()
+ xc = xc.to(memory_format=torch.contiguous_format).float()
+ else:
+ xc = super().get_input(batch, cond_key).to(self.device)
+ else:
+ xc = x
+ if (not self.cond_stage_trainable or force_c_encode) and k != 'volume_data':
+ if isinstance(xc, dict) or isinstance(xc, list):
+ c = self.get_learned_conditioning(xc)
+ else:
+ c = self.get_learned_conditioning(xc.to(self.device))
+ else:
+ c = xc
+ if bs is not None:
+ c = c[:bs]
+
+ if self.use_positional_encodings:
+ pos_x, pos_y = self.compute_latent_shifts(batch)
+ ckey = __conditioning_keys__[self.model.conditioning_key]
+ c = {ckey: c, 'pos_x': pos_x, 'pos_y': pos_y}
+
+ else:
+ c = None
+ xc = None
+ if self.use_positional_encodings:
+ pos_x, pos_y = self.compute_latent_shifts(batch)
+ c = {'pos_x': pos_x, 'pos_y': pos_y}
+ out = [z, c]
+ if return_first_stage_outputs:
+ xrec = self.decode_first_stage(z)
+ out.extend([x, xrec])
+ if return_x:
+ out.extend([x])
+ if return_original_cond:
+ out.append(xc)
+ return out
+
+ @torch.no_grad()
+ def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False):
+ if predict_cids:
+ if z.dim() == 4:
+ z = torch.argmax(z.exp(), dim=1).long()
+ z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None)
+ z = rearrange(z, 'b h w c -> b c h w').contiguous()
+
+ z = 1. / self.scale_factor * z
+ return self.first_stage_model.decode(z)
+
+ @torch.no_grad()
+ def encode_first_stage(self, x):
+ return self.first_stage_model.encode(x)
+
+ def shared_step(self, batch, **kwargs):
+ x, c = self.get_input(batch, self.first_stage_key)
+ loss = self(x, c)
+ return loss
+
+ def forward(self, x, c, *args, **kwargs):
+ if not self.fix_t:
+ t = torch.randint(0, self.num_timesteps, (x.shape[0],), device=self.device).long()
+ else:
+ t = torch.multinomial(weights, x.shape[0]//17, replacement=True)
+ t = t.reshape(((x.shape[0]//17,))).long().to(self.device)
+ t = t.unsqueeze(1)
+ t = t.repeat(1,17)
+ t = rearrange(t, 'b t-> (b t)')
+ # breakpoint()
+ if self.model.conditioning_key is not None:
+ assert c is not None
+ if self.cond_stage_trainable:
+ c = self.get_learned_conditioning(c)
+ if self.shorten_cond_schedule: # TODO: drop this option
+ tc = self.cond_ids[t].to(self.device)
+ c = self.q_sample(x_start=c, t=tc, noise=torch.randn_like(c.float()))
+ return self.p_losses(x, c, t, *args, **kwargs)
+
+ def apply_model(self, x_noisy, t, cond, return_ids=False):
+ if isinstance(cond, dict):
+ # hybrid case, cond is expected to be a dict
+ pass
+ else:
+ if not isinstance(cond, list):
+ cond = [cond]
+ key = 'c_concat' if self.model.conditioning_key == 'concat' else 'c_crossattn'
+ cond = {key: cond}
+
+ x_recon = self.model(x_noisy, t, **cond)
+
+ if isinstance(x_recon, tuple) and not return_ids:
+ return x_recon[0]
+ else:
+ return x_recon
+
+ def _predict_eps_from_xstart(self, x_t, t, pred_xstart):
+ return (extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t - pred_xstart) / \
+ extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape)
+
+ def _prior_bpd(self, x_start):
+ """
+ Get the prior KL term for the variational lower-bound, measured in
+ bits-per-dim.
+ This term can't be optimized, as it only depends on the encoder.
+ :param x_start: the [N x C x ...] tensor of inputs.
+ :return: a batch of [N] KL values (in bits), one per batch element.
+ """
+ batch_size = x_start.shape[0]
+ t = torch.tensor([self.num_timesteps - 1] * batch_size, device=x_start.device)
+ qt_mean, _, qt_log_variance = self.q_mean_variance(x_start, t)
+ kl_prior = normal_kl(mean1=qt_mean, logvar1=qt_log_variance, mean2=0.0, logvar2=0.0)
+ return mean_flat(kl_prior) / np.log(2.0)
+
+ def p_losses(self, x_start, cond, t, noise=None):
+ noise = default(noise, lambda: torch.randn_like(x_start))
+ x_noisy = self.q_sample(x_start=x_start, t=t, noise=noise)
+ model_output = self.apply_model(x_noisy, t, cond)
+
+ loss_dict = {}
+ prefix = 'train' if self.training else 'val'
+
+ if self.parameterization == "x0":
+ target = x_start
+ elif self.parameterization == "eps":
+ target = noise
+ elif self.parameterization == "v":
+ target = self.get_v(x_start, noise, t)
+ else:
+ raise NotImplementedError()
+
+ loss_simple = self.get_loss(model_output, target, mean=False).mean([1, 2, 3])
+ loss_dict.update({f'{prefix}/loss_simple': loss_simple.mean()})
+
+ logvar_t = self.logvar[t].to(self.device)
+ loss = loss_simple / torch.exp(logvar_t) + logvar_t
+ # loss = loss_simple / torch.exp(self.logvar) + self.logvar
+ if self.learn_logvar:
+ loss_dict.update({f'{prefix}/loss_gamma': loss.mean()})
+ loss_dict.update({'logvar': self.logvar.data.mean()})
+
+ loss = self.l_simple_weight * loss.mean()
+
+ loss_vlb = self.get_loss(model_output, target, mean=False).mean(dim=(1, 2, 3))
+ loss_vlb = (self.lvlb_weights[t] * loss_vlb).mean()
+ loss_dict.update({f'{prefix}/loss_vlb': loss_vlb})
+ loss += (self.original_elbo_weight * loss_vlb)
+ loss_dict.update({f'{prefix}/loss': loss})
+
+ return loss, loss_dict
+
+ def p_mean_variance(self, x, c, t, clip_denoised: bool, return_codebook_ids=False, quantize_denoised=False,
+ return_x0=False, score_corrector=None, corrector_kwargs=None):
+ t_in = t
+ model_out = self.apply_model(x, t_in, c, return_ids=return_codebook_ids)
+
+ if score_corrector is not None:
+ assert self.parameterization == "eps"
+ model_out = score_corrector.modify_score(self, model_out, x, t, c, **corrector_kwargs)
+
+ if return_codebook_ids:
+ model_out, logits = model_out
+
+ if self.parameterization == "eps":
+ x_recon = self.predict_start_from_noise(x, t=t, noise=model_out)
+ elif self.parameterization == "x0":
+ x_recon = model_out
+ else:
+ raise NotImplementedError()
+
+ if clip_denoised:
+ x_recon.clamp_(-1., 1.)
+ if quantize_denoised:
+ x_recon, _, [_, _, indices] = self.first_stage_model.quantize(x_recon)
+ model_mean, posterior_variance, posterior_log_variance = self.q_posterior(x_start=x_recon, x_t=x, t=t)
+ if return_codebook_ids:
+ return model_mean, posterior_variance, posterior_log_variance, logits
+ elif return_x0:
+ return model_mean, posterior_variance, posterior_log_variance, x_recon
+ else:
+ return model_mean, posterior_variance, posterior_log_variance
+
+ @torch.no_grad()
+ def p_sample(self, x, c, t, clip_denoised=False, repeat_noise=False,
+ return_codebook_ids=False, quantize_denoised=False, return_x0=False,
+ temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None):
+ b, *_, device = *x.shape, x.device
+ outputs = self.p_mean_variance(x=x, c=c, t=t, clip_denoised=clip_denoised,
+ return_codebook_ids=return_codebook_ids,
+ quantize_denoised=quantize_denoised,
+ return_x0=return_x0,
+ score_corrector=score_corrector, corrector_kwargs=corrector_kwargs)
+ if return_codebook_ids:
+ raise DeprecationWarning("Support dropped.")
+ model_mean, _, model_log_variance, logits = outputs
+ elif return_x0:
+ model_mean, _, model_log_variance, x0 = outputs
+ else:
+ model_mean, _, model_log_variance = outputs
+
+ noise = noise_like(x.shape, device, repeat_noise) * temperature
+ if noise_dropout > 0.:
+ noise = torch.nn.functional.dropout(noise, p=noise_dropout)
+ # no noise when t == 0
+ nonzero_mask = (1 - (t == 0).float()).reshape(b, *((1,) * (len(x.shape) - 1)))
+
+ if return_codebook_ids:
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, logits.argmax(dim=1)
+ if return_x0:
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise, x0
+ else:
+ return model_mean + nonzero_mask * (0.5 * model_log_variance).exp() * noise
+
+ @torch.no_grad()
+ def progressive_denoising(self, cond, shape, verbose=True, callback=None, quantize_denoised=False,
+ img_callback=None, mask=None, x0=None, temperature=1., noise_dropout=0.,
+ score_corrector=None, corrector_kwargs=None, batch_size=None, x_T=None, start_T=None,
+ log_every_t=None):
+ if not log_every_t:
+ log_every_t = self.log_every_t
+ timesteps = self.num_timesteps
+ if batch_size is not None:
+ b = batch_size if batch_size is not None else shape[0]
+ shape = [batch_size] + list(shape)
+ else:
+ b = batch_size = shape[0]
+ if x_T is None:
+ img = torch.randn(shape, device=self.device)
+ else:
+ img = x_T
+ intermediates = []
+ if cond is not None:
+ if isinstance(cond, dict):
+ cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else
+ list(map(lambda x: x[:batch_size], cond[key])) for key in cond}
+ else:
+ cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size]
+
+ if start_T is not None:
+ timesteps = min(timesteps, start_T)
+ iterator = tqdm(reversed(range(0, timesteps)), desc='Progressive Generation',
+ total=timesteps) if verbose else reversed(
+ range(0, timesteps))
+ if type(temperature) == float:
+ temperature = [temperature] * timesteps
+
+ for i in iterator:
+ ts = torch.full((b,), i, device=self.device, dtype=torch.long)
+ if self.shorten_cond_schedule:
+ assert self.model.conditioning_key != 'hybrid'
+ tc = self.cond_ids[ts].to(cond.device)
+ cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond))
+
+ img, x0_partial = self.p_sample(img, cond, ts,
+ clip_denoised=self.clip_denoised,
+ quantize_denoised=quantize_denoised, return_x0=True,
+ temperature=temperature[i], noise_dropout=noise_dropout,
+ score_corrector=score_corrector, corrector_kwargs=corrector_kwargs)
+ if mask is not None:
+ assert x0 is not None
+ img_orig = self.q_sample(x0, ts)
+ img = img_orig * mask + (1. - mask) * img
+
+ if i % log_every_t == 0 or i == timesteps - 1:
+ intermediates.append(x0_partial)
+ if callback: callback(i)
+ if img_callback: img_callback(img, i)
+ return img, intermediates
+
+ @torch.no_grad()
+ def p_sample_loop(self, cond, shape, return_intermediates=False,
+ x_T=None, verbose=True, callback=None, timesteps=None, quantize_denoised=False,
+ mask=None, x0=None, img_callback=None, start_T=None,
+ log_every_t=None):
+
+ if not log_every_t:
+ log_every_t = self.log_every_t
+ device = self.betas.device
+ b = shape[0]
+ if x_T is None:
+ img = torch.randn(shape, device=device)
+ else:
+ img = x_T
+
+ intermediates = [img]
+ if timesteps is None:
+ timesteps = self.num_timesteps
+
+ if start_T is not None:
+ timesteps = min(timesteps, start_T)
+ iterator = tqdm(reversed(range(0, timesteps)), desc='Sampling t', total=timesteps) if verbose else reversed(
+ range(0, timesteps))
+
+ if mask is not None:
+ assert x0 is not None
+ assert x0.shape[2:3] == mask.shape[2:3] # spatial size has to match
+
+ for i in iterator:
+ ts = torch.full((b,), i, device=device, dtype=torch.long)
+ if self.shorten_cond_schedule:
+ assert self.model.conditioning_key != 'hybrid'
+ tc = self.cond_ids[ts].to(cond.device)
+ cond = self.q_sample(x_start=cond, t=tc, noise=torch.randn_like(cond))
+
+ img = self.p_sample(img, cond, ts,
+ clip_denoised=self.clip_denoised,
+ quantize_denoised=quantize_denoised)
+ if mask is not None:
+ img_orig = self.q_sample(x0, ts)
+ img = img_orig * mask + (1. - mask) * img
+
+ if i % log_every_t == 0 or i == timesteps - 1:
+ intermediates.append(img)
+ if callback: callback(i)
+ if img_callback: img_callback(img, i)
+
+ if return_intermediates:
+ return img, intermediates
+ return img
+
+ @torch.no_grad()
+ def sample(self, cond, batch_size=16, return_intermediates=False, x_T=None,
+ verbose=True, timesteps=None, quantize_denoised=False,
+ mask=None, x0=None, shape=None, **kwargs):
+ if shape is None:
+ shape = (batch_size, self.channels, self.image_size, self.image_size)
+ if cond is not None:
+ if isinstance(cond, dict):
+ cond = {key: cond[key][:batch_size] if not isinstance(cond[key], list) else
+ list(map(lambda x: x[:batch_size], cond[key])) for key in cond}
+ else:
+ cond = [c[:batch_size] for c in cond] if isinstance(cond, list) else cond[:batch_size]
+ return self.p_sample_loop(cond,
+ shape,
+ return_intermediates=return_intermediates, x_T=x_T,
+ verbose=verbose, timesteps=timesteps, quantize_denoised=quantize_denoised,
+ mask=mask, x0=x0)
+
+ @torch.no_grad()
+ def sample_log(self, cond, batch_size, ddim, ddim_steps, **kwargs):
+ if ddim:
+ ddim_sampler = DDIMSampler(self)
+ if self.model.conditioning_key == 'crossattn' or self.model.conditioning_key == 'hybrid':
+ shape = (self.channels, self.image_size, self.image_size)
+ else:
+ shape = ((self.channels)//2, self.image_size, self.image_size)
+ samples, intermediates = ddim_sampler.sample(ddim_steps, batch_size,
+ shape, cond, verbose=False, **kwargs)
+
+ else:
+ samples, intermediates = self.sample(cond=cond, batch_size=batch_size,
+ return_intermediates=True, **kwargs)
+
+ return samples, intermediates
+
+ @torch.no_grad()
+ def get_unconditional_conditioning(self, batch_size, null_label=None):
+ if null_label is not None:
+ xc = null_label
+ if isinstance(xc, ListConfig):
+ xc = list(xc)
+ if isinstance(xc, dict) or isinstance(xc, list):
+ c = self.get_learned_conditioning(xc)
+ else:
+ if hasattr(xc, "to"):
+ xc = xc.to(self.device)
+ c = self.get_learned_conditioning(xc)
+ else:
+ if self.cond_stage_key in ["class_label", "cls"]:
+ xc = self.cond_stage_model.get_unconditional_conditioning(batch_size, device=self.device)
+ return self.get_learned_conditioning(xc)
+ else:
+ raise NotImplementedError("todo")
+ if isinstance(c, list): # in case the encoder gives us a list
+ for i in range(len(c)):
+ c[i] = repeat(c[i], '1 ... -> b ...', b=batch_size).to(self.device)
+ else:
+ c = repeat(c, '1 ... -> b ...', b=batch_size).to(self.device)
+ return c
+
+ @torch.no_grad()
+ def log_images(self, batch, N=16, n_row=4, sample=True, ddim_steps=50, ddim_eta=0., return_keys=None,
+ quantize_denoised=True, inpaint=True, plot_denoise_rows=False, plot_progressive_rows=True,
+ plot_diffusion_rows=True, unconditional_guidance_scale=1., unconditional_guidance_label=None,
+ use_ema_scope=True,
+ **kwargs):
+ ema_scope = self.ema_scope if use_ema_scope else nullcontext
+ use_ddim = ddim_steps is not None
+
+ if self.fix_t == True:
+ sample = True
+ plot_denoise_rows = False
+ plot_progressive_rows = False
+ plot_diffusion_rows = False
+ inpaint = False
+
+ log = dict()
+ z, c, x, xrec, xc = self.get_input(batch, self.first_stage_key,
+ return_first_stage_outputs=True,
+ force_c_encode=True,
+ return_original_cond=True,
+ bs=N)
+ N = min(x.shape[0], N)
+ n_row = min(x.shape[0], n_row)
+ log["inputs"] = x
+ log["reconstruction"] = xrec
+ # if self.model.conditioning_key is not None:
+ # if hasattr(self.cond_stage_model, "decode"):
+ # # xc = self.cond_stage_model.decode(c)
+ # if c.shape[1] == 8:
+ # xc = self.decode_first_stage(c[:,:4])
+ # elif c.shape[1] == 6:
+ # xc = self.decode_first_stage(c[:, :3])
+ # else:
+ # xc = self.decode_first_stage(c)
+ # log["conditioning"] = xc
+ # elif self.cond_stage_key in ["caption", "txt"]:
+ # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch[self.cond_stage_key], size=x.shape[2] // 25)
+ # log["conditioning"] = xc
+ # elif self.cond_stage_key in ['class_label', "cls"]:
+ # try:
+ # xc = log_txt_as_img((x.shape[2], x.shape[3]), batch["human_label"], size=x.shape[2] // 25)
+ # log['conditioning'] = xc
+ # except KeyError:
+ # # probably no "human_label" in batch
+ # pass
+ # elif isimage(xc):
+ # log["conditioning"] = xc
+ # if ismap(xc):
+ # log["original_conditioning"] = self.to_rgb(xc)
+
+ if plot_diffusion_rows:
+ # get diffusion row
+ diffusion_row = list()
+ z_start = z[:n_row]
+ for t in range(self.num_timesteps):
+ if t % self.log_every_t == 0 or t == self.num_timesteps - 1:
+ t = repeat(torch.tensor([t]), '1 -> b', b=n_row)
+ t = t.to(self.device).long()
+ noise = torch.randn_like(z_start)
+ z_noisy = self.q_sample(x_start=z_start, t=t, noise=noise)
+ diffusion_row.append(self.decode_first_stage(z_noisy))
+
+ diffusion_row = torch.stack(diffusion_row) # n_log_step, n_row, C, H, W
+ diffusion_grid = rearrange(diffusion_row, 'n b c h w -> b n c h w')
+ diffusion_grid = rearrange(diffusion_grid, 'b n c h w -> (b n) c h w')
+ diffusion_grid = make_grid(diffusion_grid, nrow=diffusion_row.shape[0])
+ log["diffusion_row"] = diffusion_grid
+
+ if sample:
+ # get denoise row
+ with ema_scope("Sampling"):
+ samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim,
+ ddim_steps=ddim_steps, eta=ddim_eta)
+ # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True)
+ x_samples = self.decode_first_stage(samples)
+ log["samples"] = x_samples
+ if plot_denoise_rows:
+ denoise_grid = self._get_denoise_row_from_list(z_denoise_row)
+ log["denoise_row"] = denoise_grid
+
+ if quantize_denoised and not isinstance(self.first_stage_model, AutoencoderKL) and not isinstance(
+ self.first_stage_model, IdentityFirstStage):
+ # also display when quantizing x0 while sampling
+ with ema_scope("Plotting Quantized Denoised"):
+ samples, z_denoise_row = self.sample_log(cond=c, batch_size=N, ddim=use_ddim,
+ ddim_steps=ddim_steps, eta=ddim_eta,
+ quantize_denoised=True)
+ # samples, z_denoise_row = self.sample(cond=c, batch_size=N, return_intermediates=True,
+ # quantize_denoised=True)
+ x_samples = self.decode_first_stage(samples.to(self.device))
+ log["samples_x0_quantized"] = x_samples
+
+ if unconditional_guidance_scale > 1.0:
+ uc = self.get_unconditional_conditioning(N, unconditional_guidance_label)
+ if self.model.conditioning_key == "crossattn-adm":
+ uc = {"c_crossattn": [uc], "c_adm": c["c_adm"]}
+ with ema_scope("Sampling with classifier-free guidance"):
+ samples_cfg, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim,
+ ddim_steps=ddim_steps, eta=ddim_eta,
+ unconditional_guidance_scale=unconditional_guidance_scale,
+ unconditional_conditioning=uc,
+ )
+ x_samples_cfg = self.decode_first_stage(samples_cfg)
+ log[f"samples_cfg_scale_{unconditional_guidance_scale:.2f}"] = x_samples_cfg
+
+ if c.shape[1] == 8 or c.shape[1] == 6:
+ inpaint = False
+ if inpaint:
+ # make a simple center square
+ b, h, w = z.shape[0], z.shape[2], z.shape[3]
+ mask = torch.ones(N, h, w).to(self.device)
+ # zeros will be filled in
+ mask[:, h // 4:3 * h // 4, w // 4:3 * w // 4] = 0.
+ mask = mask[:, None, ...]
+ with ema_scope("Plotting Inpaint"):
+ samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta,
+ ddim_steps=ddim_steps, x0=z[:N], mask=mask)
+ x_samples = self.decode_first_stage(samples.to(self.device))
+ log["samples_inpainting"] = x_samples
+ log["mask"] = mask
+
+ # outpaint
+ mask = 1. - mask
+ with ema_scope("Plotting Outpaint"):
+ samples, _ = self.sample_log(cond=c, batch_size=N, ddim=use_ddim, eta=ddim_eta,
+ ddim_steps=ddim_steps, x0=z[:N], mask=mask)
+ x_samples = self.decode_first_stage(samples.to(self.device))
+ log["samples_outpainting"] = x_samples
+
+ if plot_progressive_rows:
+ with ema_scope("Plotting Progressives"):
+ img, progressives = self.progressive_denoising(c,
+ shape=(self.channels, self.image_size, self.image_size),
+ batch_size=N)
+ prog_row = self._get_denoise_row_from_list(progressives, desc="Progressive Generation")
+ log["progressive_row"] = prog_row
+
+ if return_keys:
+ if np.intersect1d(list(log.keys()), return_keys).shape[0] == 0:
+ return log
+ else:
+ return {key: log[key] for key in return_keys}
+ return log
+
+ def configure_optimizers(self):
+ lr = self.learning_rate
+ params = []
+ for name, p in self.model.named_parameters():
+ if 'tem' in name:
+ params.append(p)
+ # params = list(self.model.parameters())
+ if self.cond_stage_trainable:
+ print(f"{self.__class__.__name__}: Also optimizing conditioner params!")
+ params = params + list(self.cond_stage_model.parameters())
+ if self.learn_logvar:
+ print('Diffusion model optimizing logvar')
+ params.append(self.logvar)
+ opt = torch.optim.AdamW(params, lr=lr)
+ if self.use_scheduler:
+ assert 'target' in self.scheduler_config
+ scheduler = instantiate_from_config(self.scheduler_config)
+
+ print("Setting up LambdaLR scheduler...")
+ scheduler = [
+ {
+ 'scheduler': LambdaLR(opt, lr_lambda=scheduler.schedule),
+ 'interval': 'step',
+ 'frequency': 1
+ }]
+ return [opt], scheduler
+ return opt
+
+ @torch.no_grad()
+ def to_rgb(self, x):
+ x = x.float()
+ if not hasattr(self, "colorize"):
+ self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x)
+ x = nn.functional.conv2d(x, weight=self.colorize)
+ x = 2. * (x - x.min()) / (x.max() - x.min()) - 1.
+ return x
+
+
+class DiffusionWrapper(pl.LightningModule):
+ def __init__(self, diff_model_config, conditioning_key):
+ super().__init__()
+ self.sequential_cross_attn = diff_model_config.pop("sequential_crossattn", False)
+ self.diffusion_model = instantiate_from_config(diff_model_config)
+ self.conditioning_key = conditioning_key
+ assert self.conditioning_key in [None, 'concat', 'crossattn', 'hybrid', 'adm', 'hybrid-adm', 'crossattn-adm']
+
+ def forward(self, x, t, c_concat: list = None, c_crossattn: list = None, c_adm=None):
+ if self.conditioning_key is None:
+ out = self.diffusion_model(x, t)
+ elif self.conditioning_key == 'concat':
+ # breakpoint()
+ xc = torch.cat([x] + c_concat, dim=1)
+ out = self.diffusion_model(xc, t)
+ elif self.conditioning_key == 'crossattn':
+ # if not self.sequential_cross_attn:
+ # cc = torch.cat(c_crossattn, 1)
+ # else:
+ # cc = c_crossattn
+ # out = self.diffusion_model(x, t, context=cc)
+ # breakpoint()
+ xc = torch.cat([x] + [c_concat], dim=1)
+ cc = torch.cat([c_crossattn], 1)
+ out = self.diffusion_model(xc, t, context=cc)
+ elif self.conditioning_key == 'hybrid':
+ xc = torch.cat([x] + c_crossattn, dim=1)
+ cc = torch.cat(c_crossattn, 1)
+ out = self.diffusion_model(xc, t, context=cc)
+ elif self.conditioning_key == 'hybrid-adm':
+ assert c_adm is not None
+ xc = torch.cat([x] + c_concat, dim=1)
+ cc = torch.cat(c_crossattn, 1)
+ out = self.diffusion_model(xc, t, context=cc, y=c_adm)
+ elif self.conditioning_key == 'crossattn-adm':
+ assert c_adm is not None
+ cc = torch.cat(c_crossattn, 1)
+ out = self.diffusion_model(x, t, context=cc, y=c_adm)
+ elif self.conditioning_key == 'adm':
+ cc = c_crossattn[0]
+ out = self.diffusion_model(x, t, y=cc)
+ else:
+ raise NotImplementedError()
+
+ return out
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon.py
new file mode 100644
index 0000000000000000000000000000000000000000..af03934332de891dee007853077d9de5f57d1641
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon.py
@@ -0,0 +1,141 @@
+"""
+wild mixture of
+https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py
+https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py
+https://github.com/CompVis/taming-transformers
+-- merci
+"""
+
+import torch
+import torch.nn as nn
+import numpy as np
+import pytorch_lightning as pl
+from torch.optim.lr_scheduler import LambdaLR
+from einops import rearrange, repeat
+from contextlib import contextmanager, nullcontext
+from functools import partial
+import itertools
+from tqdm import tqdm
+from torchvision.utils import make_grid
+from pytorch_lightning.utilities.distributed import rank_zero_only
+from omegaconf import ListConfig
+
+from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config
+from ldm.modules.ema import LitEma
+from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution
+from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL
+from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like
+from ldm.models.diffusion.ddim import DDIMSampler
+
+
+__conditioning_keys__ = {'concat': 'c_concat',
+ 'crossattn': 'c_crossattn',
+ 'adm': 'y'}
+
+
+def disabled_train(self, mode=True):
+ """Overwrite model.train with this function to make sure train/eval mode
+ does not change anymore."""
+ return self
+
+
+def uniform_on_device(r1, r2, shape, device):
+ return (r1 - r2) * torch.rand(*shape, device=device) + r2
+
+
+
+class Latent_Recon(pl.LightningModule):
+ """main class"""
+
+ def __init__(self,
+ first_stage_config,
+ cond_stage_config,
+ num_timesteps_cond=None,
+ cond_stage_key="image",
+ cond_stage_trainable=False,
+ concat_mode=True,
+ cond_stage_forward=None,
+ conditioning_key=None,
+ scale_factor=1.0,
+ scale_by_std=False,
+ force_null_conditioning=False,
+ *args, **kwargs):
+ super().__init__()
+ self.scale_by_std = scale_by_std
+
+ try:
+ self.num_downs = len(first_stage_config.params.ddconfig.ch_mult) - 1
+ except:
+ self.num_downs = 0
+ if not scale_by_std:
+ self.scale_factor = scale_factor
+ else:
+ self.register_buffer('scale_factor', torch.tensor(scale_factor))
+ # breakpoint()
+ self.instantiate_first_stage(first_stage_config)
+
+ def instantiate_first_stage(self, config):
+ model = instantiate_from_config(config)
+ self.first_stage_model = model.eval()
+ self.first_stage_model.train = disabled_train
+ for param in self.first_stage_model.parameters():
+ param.requires_grad = False
+
+ def get_first_stage_encoding(self, encoder_posterior):
+ # breakpoint()
+ if isinstance(encoder_posterior, DiagonalGaussianDistribution):
+ z = encoder_posterior.sample()
+ elif isinstance(encoder_posterior, torch.Tensor):
+ z = encoder_posterior
+ else:
+ raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented")
+ return self.scale_factor * z
+
+
+ @torch.no_grad()
+ def get_input(self, batch):
+
+ x = rearrange(batch, 'b h w c -> b c h w')
+ x = x.repeat(1,3,1,1)
+ x = x.to(memory_format=torch.contiguous_format).float()
+
+ x = x.to(self.device)
+ encoder_posterior = self.encode_first_stage(x)
+ z = self.get_first_stage_encoding(encoder_posterior).detach()
+
+ xrec = self.decode_first_stage(z)
+ return xrec
+
+ @torch.no_grad()
+ def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False):
+ if predict_cids:
+ if z.dim() == 4:
+ z = torch.argmax(z.exp(), dim=1).long()
+ z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None)
+ z = rearrange(z, 'b h w c -> b c h w').contiguous()
+
+ z = 1. / self.scale_factor * z
+ return self.first_stage_model.decode(z)
+
+ @torch.no_grad()
+ def encode_first_stage(self, x):
+ return self.first_stage_model.encode(x)
+
+ def forward(self, batch, *args, **kwargs):
+ xrec = self.get_input(batch)
+ return xrec
+
+ @torch.no_grad()
+ def validation_step(self, batch, batch_idx):
+ xrec = self.forward(batch)
+ return xrec
+
+ @torch.no_grad()
+ def to_rgb(self, x):
+ x = x.float()
+ if not hasattr(self, "colorize"):
+ self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x)
+ x = nn.functional.conv2d(x, weight=self.colorize)
+ x = 2. * (x - x.min()) / (x.max() - x.min()) - 1.
+ return x
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon_vq.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon_vq.py
new file mode 100644
index 0000000000000000000000000000000000000000..7bf3d28fb83fafcf8a2c3017df6c717f9eacc1f9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/ddpm_recon_vq.py
@@ -0,0 +1,144 @@
+"""
+wild mixture of
+https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py
+https://github.com/openai/improved-diffusion/blob/e94489283bb876ac1477d5dd7709bbbd2d9902ce/improved_diffusion/gaussian_diffusion.py
+https://github.com/CompVis/taming-transformers
+-- merci
+"""
+
+import torch
+import torch.nn as nn
+import numpy as np
+import pytorch_lightning as pl
+from torch.optim.lr_scheduler import LambdaLR
+from einops import rearrange, repeat
+from contextlib import contextmanager, nullcontext
+from functools import partial
+import itertools
+from tqdm import tqdm
+from torchvision.utils import make_grid
+from pytorch_lightning.utilities.distributed import rank_zero_only
+from omegaconf import ListConfig
+
+from ldm.util import log_txt_as_img, exists, default, ismap, isimage, mean_flat, count_params, instantiate_from_config
+from ldm.modules.ema import LitEma
+from ldm.modules.distributions.distributions import normal_kl, DiagonalGaussianDistribution
+from ldm.models.autoencoder import IdentityFirstStage, AutoencoderKL
+from ldm.modules.diffusionmodules.util import make_beta_schedule, extract_into_tensor, noise_like
+from ldm.models.diffusion.ddim import DDIMSampler
+
+
+__conditioning_keys__ = {'concat': 'c_concat',
+ 'crossattn': 'c_crossattn',
+ 'adm': 'y'}
+
+
+def disabled_train(self, mode=True):
+ """Overwrite model.train with this function to make sure train/eval mode
+ does not change anymore."""
+ return self
+
+
+def uniform_on_device(r1, r2, shape, device):
+ return (r1 - r2) * torch.rand(*shape, device=device) + r2
+
+
+
+class Latent_Recon(pl.LightningModule):
+ """main class"""
+
+ def __init__(self,
+ first_stage_config,
+ cond_stage_config,
+ num_timesteps_cond=None,
+ cond_stage_key="image",
+ cond_stage_trainable=False,
+ concat_mode=True,
+ cond_stage_forward=None,
+ conditioning_key=None,
+ scale_factor=1.0,
+ scale_by_std=False,
+ force_null_conditioning=False,
+ *args, **kwargs):
+ super().__init__()
+ self.scale_by_std = scale_by_std
+
+ try:
+ self.num_downs = len(first_stage_config.params.ddconfig.ch_mult) - 1
+ except:
+ self.num_downs = 0
+ if not scale_by_std:
+ self.scale_factor = scale_factor
+ else:
+ self.register_buffer('scale_factor', torch.tensor(scale_factor))
+ # breakpoint()
+ self.instantiate_first_stage(first_stage_config)
+
+ def instantiate_first_stage(self, config):
+ model = instantiate_from_config(config)
+ self.first_stage_model = model.eval()
+ self.first_stage_model.train = disabled_train
+ for param in self.first_stage_model.parameters():
+ param.requires_grad = False
+
+ def get_first_stage_encoding(self, encoder_posterior):
+ # breakpoint()
+ if isinstance(encoder_posterior, DiagonalGaussianDistribution):
+ z = encoder_posterior.sample()
+ elif isinstance(encoder_posterior, torch.Tensor):
+ z = encoder_posterior
+ elif isinstance(encoder_posterior, tuple):
+ z = encoder_posterior[0]
+ else:
+ raise NotImplementedError(f"encoder_posterior of type '{type(encoder_posterior)}' not yet implemented")
+ # breakpoint()
+ return self.scale_factor * z
+
+
+ @torch.no_grad()
+ def get_input(self, batch):
+
+ x = rearrange(batch, 'b h w c -> b c h w')
+ x = x.repeat(1,3,1,1)
+ x = x.to(memory_format=torch.contiguous_format).float()
+
+ x = x.to(self.device)
+ encoder_posterior = self.encode_first_stage(x)
+ z = self.get_first_stage_encoding(encoder_posterior).detach()
+
+ xrec = self.decode_first_stage(z)
+ return xrec
+
+ @torch.no_grad()
+ def decode_first_stage(self, z, predict_cids=False, force_not_quantize=False):
+ if predict_cids:
+ if z.dim() == 4:
+ z = torch.argmax(z.exp(), dim=1).long()
+ z = self.first_stage_model.quantize.get_codebook_entry(z, shape=None)
+ z = rearrange(z, 'b h w c -> b c h w').contiguous()
+
+ z = 1. / self.scale_factor * z
+ return self.first_stage_model.decode(z)
+
+ @torch.no_grad()
+ def encode_first_stage(self, x):
+ return self.first_stage_model.encode(x)
+
+ def forward(self, batch, *args, **kwargs):
+ xrec = self.get_input(batch)
+ return xrec
+
+ @torch.no_grad()
+ def validation_step(self, batch, batch_idx):
+ xrec = self.forward(batch)
+ return xrec
+
+ @torch.no_grad()
+ def to_rgb(self, x):
+ x = x.float()
+ if not hasattr(self, "colorize"):
+ self.colorize = torch.randn(3, x.shape[1], 1, 1).to(x)
+ x = nn.functional.conv2d(x, weight=self.colorize)
+ x = 2. * (x - x.min()) / (x.max() - x.min()) - 1.
+ return x
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/plms.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/plms.py
new file mode 100644
index 0000000000000000000000000000000000000000..7002a365d27168ced0a04e9a4d83e088f8284eae
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/plms.py
@@ -0,0 +1,244 @@
+"""SAMPLING ONLY."""
+
+import torch
+import numpy as np
+from tqdm import tqdm
+from functools import partial
+
+from ldm.modules.diffusionmodules.util import make_ddim_sampling_parameters, make_ddim_timesteps, noise_like
+from ldm.models.diffusion.sampling_util import norm_thresholding
+
+
+class PLMSSampler(object):
+ def __init__(self, model, schedule="linear", **kwargs):
+ super().__init__()
+ self.model = model
+ self.ddpm_num_timesteps = model.num_timesteps
+ self.schedule = schedule
+
+ def register_buffer(self, name, attr):
+ if type(attr) == torch.Tensor:
+ if attr.device != torch.device("cuda"):
+ attr = attr.to(torch.device("cuda"))
+ setattr(self, name, attr)
+
+ def make_schedule(self, ddim_num_steps, ddim_discretize="uniform", ddim_eta=0., verbose=True):
+ if ddim_eta != 0:
+ raise ValueError('ddim_eta must be 0 for PLMS')
+ self.ddim_timesteps = make_ddim_timesteps(ddim_discr_method=ddim_discretize, num_ddim_timesteps=ddim_num_steps,
+ num_ddpm_timesteps=self.ddpm_num_timesteps,verbose=verbose)
+ alphas_cumprod = self.model.alphas_cumprod
+ assert alphas_cumprod.shape[0] == self.ddpm_num_timesteps, 'alphas have to be defined for each timestep'
+ to_torch = lambda x: x.clone().detach().to(torch.float32).to(self.model.device)
+
+ self.register_buffer('betas', to_torch(self.model.betas))
+ self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod))
+ self.register_buffer('alphas_cumprod_prev', to_torch(self.model.alphas_cumprod_prev))
+
+ # calculations for diffusion q(x_t | x_{t-1}) and others
+ self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod.cpu())))
+ self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod.cpu())))
+ self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod.cpu())))
+ self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu())))
+ self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod.cpu() - 1)))
+
+ # ddim sampling parameters
+ ddim_sigmas, ddim_alphas, ddim_alphas_prev = make_ddim_sampling_parameters(alphacums=alphas_cumprod.cpu(),
+ ddim_timesteps=self.ddim_timesteps,
+ eta=ddim_eta,verbose=verbose)
+ self.register_buffer('ddim_sigmas', ddim_sigmas)
+ self.register_buffer('ddim_alphas', ddim_alphas)
+ self.register_buffer('ddim_alphas_prev', ddim_alphas_prev)
+ self.register_buffer('ddim_sqrt_one_minus_alphas', np.sqrt(1. - ddim_alphas))
+ sigmas_for_original_sampling_steps = ddim_eta * torch.sqrt(
+ (1 - self.alphas_cumprod_prev) / (1 - self.alphas_cumprod) * (
+ 1 - self.alphas_cumprod / self.alphas_cumprod_prev))
+ self.register_buffer('ddim_sigmas_for_original_num_steps', sigmas_for_original_sampling_steps)
+
+ @torch.no_grad()
+ def sample(self,
+ S,
+ batch_size,
+ shape,
+ conditioning=None,
+ callback=None,
+ normals_sequence=None,
+ img_callback=None,
+ quantize_x0=False,
+ eta=0.,
+ mask=None,
+ x0=None,
+ temperature=1.,
+ noise_dropout=0.,
+ score_corrector=None,
+ corrector_kwargs=None,
+ verbose=True,
+ x_T=None,
+ log_every_t=100,
+ unconditional_guidance_scale=1.,
+ unconditional_conditioning=None,
+ # this has to come in the same format as the conditioning, # e.g. as encoded tokens, ...
+ dynamic_threshold=None,
+ **kwargs
+ ):
+ if conditioning is not None:
+ if isinstance(conditioning, dict):
+ cbs = conditioning[list(conditioning.keys())[0]].shape[0]
+ if cbs != batch_size:
+ print(f"Warning: Got {cbs} conditionings but batch-size is {batch_size}")
+ else:
+ if conditioning.shape[0] != batch_size:
+ print(f"Warning: Got {conditioning.shape[0]} conditionings but batch-size is {batch_size}")
+
+ self.make_schedule(ddim_num_steps=S, ddim_eta=eta, verbose=verbose)
+ # sampling
+ C, H, W = shape
+ size = (batch_size, C, H, W)
+ print(f'Data shape for PLMS sampling is {size}')
+
+ samples, intermediates = self.plms_sampling(conditioning, size,
+ callback=callback,
+ img_callback=img_callback,
+ quantize_denoised=quantize_x0,
+ mask=mask, x0=x0,
+ ddim_use_original_steps=False,
+ noise_dropout=noise_dropout,
+ temperature=temperature,
+ score_corrector=score_corrector,
+ corrector_kwargs=corrector_kwargs,
+ x_T=x_T,
+ log_every_t=log_every_t,
+ unconditional_guidance_scale=unconditional_guidance_scale,
+ unconditional_conditioning=unconditional_conditioning,
+ dynamic_threshold=dynamic_threshold,
+ )
+ return samples, intermediates
+
+ @torch.no_grad()
+ def plms_sampling(self, cond, shape,
+ x_T=None, ddim_use_original_steps=False,
+ callback=None, timesteps=None, quantize_denoised=False,
+ mask=None, x0=None, img_callback=None, log_every_t=100,
+ temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None,
+ unconditional_guidance_scale=1., unconditional_conditioning=None,
+ dynamic_threshold=None):
+ device = self.model.betas.device
+ b = shape[0]
+ if x_T is None:
+ img = torch.randn(shape, device=device)
+ else:
+ img = x_T
+
+ if timesteps is None:
+ timesteps = self.ddpm_num_timesteps if ddim_use_original_steps else self.ddim_timesteps
+ elif timesteps is not None and not ddim_use_original_steps:
+ subset_end = int(min(timesteps / self.ddim_timesteps.shape[0], 1) * self.ddim_timesteps.shape[0]) - 1
+ timesteps = self.ddim_timesteps[:subset_end]
+
+ intermediates = {'x_inter': [img], 'pred_x0': [img]}
+ time_range = list(reversed(range(0,timesteps))) if ddim_use_original_steps else np.flip(timesteps)
+ total_steps = timesteps if ddim_use_original_steps else timesteps.shape[0]
+ print(f"Running PLMS Sampling with {total_steps} timesteps")
+
+ iterator = tqdm(time_range, desc='PLMS Sampler', total=total_steps)
+ old_eps = []
+
+ for i, step in enumerate(iterator):
+ index = total_steps - i - 1
+ ts = torch.full((b,), step, device=device, dtype=torch.long)
+ ts_next = torch.full((b,), time_range[min(i + 1, len(time_range) - 1)], device=device, dtype=torch.long)
+
+ if mask is not None:
+ assert x0 is not None
+ img_orig = self.model.q_sample(x0, ts) # TODO: deterministic forward pass?
+ img = img_orig * mask + (1. - mask) * img
+
+ outs = self.p_sample_plms(img, cond, ts, index=index, use_original_steps=ddim_use_original_steps,
+ quantize_denoised=quantize_denoised, temperature=temperature,
+ noise_dropout=noise_dropout, score_corrector=score_corrector,
+ corrector_kwargs=corrector_kwargs,
+ unconditional_guidance_scale=unconditional_guidance_scale,
+ unconditional_conditioning=unconditional_conditioning,
+ old_eps=old_eps, t_next=ts_next,
+ dynamic_threshold=dynamic_threshold)
+ img, pred_x0, e_t = outs
+ old_eps.append(e_t)
+ if len(old_eps) >= 4:
+ old_eps.pop(0)
+ if callback: callback(i)
+ if img_callback: img_callback(pred_x0, i)
+
+ if index % log_every_t == 0 or index == total_steps - 1:
+ intermediates['x_inter'].append(img)
+ intermediates['pred_x0'].append(pred_x0)
+
+ return img, intermediates
+
+ @torch.no_grad()
+ def p_sample_plms(self, x, c, t, index, repeat_noise=False, use_original_steps=False, quantize_denoised=False,
+ temperature=1., noise_dropout=0., score_corrector=None, corrector_kwargs=None,
+ unconditional_guidance_scale=1., unconditional_conditioning=None, old_eps=None, t_next=None,
+ dynamic_threshold=None):
+ b, *_, device = *x.shape, x.device
+
+ def get_model_output(x, t):
+ if unconditional_conditioning is None or unconditional_guidance_scale == 1.:
+ e_t = self.model.apply_model(x, t, c)
+ else:
+ x_in = torch.cat([x] * 2)
+ t_in = torch.cat([t] * 2)
+ c_in = torch.cat([unconditional_conditioning, c])
+ e_t_uncond, e_t = self.model.apply_model(x_in, t_in, c_in).chunk(2)
+ e_t = e_t_uncond + unconditional_guidance_scale * (e_t - e_t_uncond)
+
+ if score_corrector is not None:
+ assert self.model.parameterization == "eps"
+ e_t = score_corrector.modify_score(self.model, e_t, x, t, c, **corrector_kwargs)
+
+ return e_t
+
+ alphas = self.model.alphas_cumprod if use_original_steps else self.ddim_alphas
+ alphas_prev = self.model.alphas_cumprod_prev if use_original_steps else self.ddim_alphas_prev
+ sqrt_one_minus_alphas = self.model.sqrt_one_minus_alphas_cumprod if use_original_steps else self.ddim_sqrt_one_minus_alphas
+ sigmas = self.model.ddim_sigmas_for_original_num_steps if use_original_steps else self.ddim_sigmas
+
+ def get_x_prev_and_pred_x0(e_t, index):
+ # select parameters corresponding to the currently considered timestep
+ a_t = torch.full((b, 1, 1, 1), alphas[index], device=device)
+ a_prev = torch.full((b, 1, 1, 1), alphas_prev[index], device=device)
+ sigma_t = torch.full((b, 1, 1, 1), sigmas[index], device=device)
+ sqrt_one_minus_at = torch.full((b, 1, 1, 1), sqrt_one_minus_alphas[index],device=device)
+
+ # current prediction for x_0
+ pred_x0 = (x - sqrt_one_minus_at * e_t) / a_t.sqrt()
+ if quantize_denoised:
+ pred_x0, _, *_ = self.model.first_stage_model.quantize(pred_x0)
+ if dynamic_threshold is not None:
+ pred_x0 = norm_thresholding(pred_x0, dynamic_threshold)
+ # direction pointing to x_t
+ dir_xt = (1. - a_prev - sigma_t**2).sqrt() * e_t
+ noise = sigma_t * noise_like(x.shape, device, repeat_noise) * temperature
+ if noise_dropout > 0.:
+ noise = torch.nn.functional.dropout(noise, p=noise_dropout)
+ x_prev = a_prev.sqrt() * pred_x0 + dir_xt + noise
+ return x_prev, pred_x0
+
+ e_t = get_model_output(x, t)
+ if len(old_eps) == 0:
+ # Pseudo Improved Euler (2nd order)
+ x_prev, pred_x0 = get_x_prev_and_pred_x0(e_t, index)
+ e_t_next = get_model_output(x_prev, t_next)
+ e_t_prime = (e_t + e_t_next) / 2
+ elif len(old_eps) == 1:
+ # 2nd order Pseudo Linear Multistep (Adams-Bashforth)
+ e_t_prime = (3 * e_t - old_eps[-1]) / 2
+ elif len(old_eps) == 2:
+ # 3nd order Pseudo Linear Multistep (Adams-Bashforth)
+ e_t_prime = (23 * e_t - 16 * old_eps[-1] + 5 * old_eps[-2]) / 12
+ elif len(old_eps) >= 3:
+ # 4nd order Pseudo Linear Multistep (Adams-Bashforth)
+ e_t_prime = (55 * e_t - 59 * old_eps[-1] + 37 * old_eps[-2] - 9 * old_eps[-3]) / 24
+
+ x_prev, pred_x0 = get_x_prev_and_pred_x0(e_t_prime, index)
+
+ return x_prev, pred_x0, e_t
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/sampling_util.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/sampling_util.py
new file mode 100644
index 0000000000000000000000000000000000000000..7eff02be6d7c54d43ee6680636ac0698dd3b3f33
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/models/diffusion/sampling_util.py
@@ -0,0 +1,22 @@
+import torch
+import numpy as np
+
+
+def append_dims(x, target_dims):
+ """Appends dimensions to the end of a tensor until it has target_dims dimensions.
+ From https://github.com/crowsonkb/k-diffusion/blob/master/k_diffusion/utils.py"""
+ dims_to_append = target_dims - x.ndim
+ if dims_to_append < 0:
+ raise ValueError(f'input has {x.ndim} dims but target_dims is {target_dims}, which is less')
+ return x[(...,) + (None,) * dims_to_append]
+
+
+def norm_thresholding(x0, value):
+ s = append_dims(x0.pow(2).flatten(1).mean(1).sqrt().clamp(min=value), x0.ndim)
+ return x0 * (value / s)
+
+
+def spatial_norm_thresholding(x0, value):
+ # b c h w
+ s = x0.pow(2).mean(1, keepdim=True).sqrt().clamp(min=value)
+ return x0 * (value / s)
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dc6da1ca0710f1c11fdbbb23ded10dd414cbd066
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..37f27f96b5a7a70aa2de04cd439254c22e147de2
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..22c3e3bcb8395144e8c7bd913c3fccb1bc18a717
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dec0489a60f5a6563bdfe81433924bdaba6a3319
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/attention.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..165ffd736a946ec55b8450475b70932a55812c44
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dc2a97436638fa66053e444623533a5f508a48ba
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cb5d95d9d420f8dd12da9e371f2a4759ba154c6c
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..582c95fee5adf36f598de6d429741356467eec38
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/ema.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c2c2a2ec545e54abefcdaf23888e8f71b8d6d818
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bf29a02ee530dabdb5a83ca9d0f4399dbba31b03
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cc6d13c74e812e9ef09f0ba7b230505d15e0ce55
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/__pycache__/x_transformer.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/attention.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/attention.py
new file mode 100644
index 0000000000000000000000000000000000000000..c7e06ed79f47b0b7b869531e69e1f9de6f69c2a7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/attention.py
@@ -0,0 +1,354 @@
+from inspect import isfunction
+import math
+import torch
+import torch.nn.functional as F
+from torch import nn, einsum
+from einops import rearrange, repeat
+from typing import Optional, Any
+
+from ldm.modules.diffusionmodules.util import checkpoint
+
+
+try:
+ import xformers
+ import xformers.ops
+ XFORMERS_IS_AVAILBLE = True
+except:
+ XFORMERS_IS_AVAILBLE = False
+
+# CrossAttn precision handling
+import os
+_ATTN_PRECISION = os.environ.get("ATTN_PRECISION", "fp32")
+
+def exists(val):
+ return val is not None
+
+
+def uniq(arr):
+ return{el: True for el in arr}.keys()
+
+
+def default(val, d):
+ if exists(val):
+ return val
+ return d() if isfunction(d) else d
+
+
+def max_neg_value(t):
+ return -torch.finfo(t.dtype).max
+
+
+def init_(tensor):
+ dim = tensor.shape[-1]
+ std = 1 / math.sqrt(dim)
+ tensor.uniform_(-std, std)
+ return tensor
+
+
+# feedforward
+class GEGLU(nn.Module):
+ def __init__(self, dim_in, dim_out):
+ super().__init__()
+ self.proj = nn.Linear(dim_in, dim_out * 2)
+
+ def forward(self, x):
+ x, gate = self.proj(x).chunk(2, dim=-1)
+ return x * F.gelu(gate)
+
+
+class FeedForward(nn.Module):
+ def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.):
+ super().__init__()
+ inner_dim = int(dim * mult)
+ dim_out = default(dim_out, dim)
+ project_in = nn.Sequential(
+ nn.Linear(dim, inner_dim),
+ nn.GELU()
+ ) if not glu else GEGLU(dim, inner_dim)
+
+ self.net = nn.Sequential(
+ project_in,
+ nn.Dropout(dropout),
+ nn.Linear(inner_dim, dim_out)
+ )
+
+ def forward(self, x):
+ return self.net(x)
+
+
+def zero_module(module):
+ """
+ Zero out the parameters of a module and return it.
+ """
+ for p in module.parameters():
+ p.detach().zero_()
+ return module
+
+
+def Normalize(in_channels):
+ return torch.nn.GroupNorm(num_groups=32, num_channels=in_channels, eps=1e-6, affine=True)
+
+
+class SpatialSelfAttention(nn.Module):
+ def __init__(self, in_channels):
+ super().__init__()
+ self.in_channels = in_channels
+
+ self.norm = Normalize(in_channels)
+ self.q = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.k = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.v = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.proj_out = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+
+ def forward(self, x):
+ h_ = x
+ h_ = self.norm(h_)
+ q = self.q(h_)
+ k = self.k(h_)
+ v = self.v(h_)
+
+ # compute attention
+ b,c,h,w = q.shape
+ q = rearrange(q, 'b c h w -> b (h w) c')
+ k = rearrange(k, 'b c h w -> b c (h w)')
+ w_ = torch.einsum('bij,bjk->bik', q, k)
+
+ w_ = w_ * (int(c)**(-0.5))
+ w_ = torch.nn.functional.softmax(w_, dim=2)
+
+ # attend to values
+ v = rearrange(v, 'b c h w -> b c (h w)')
+ w_ = rearrange(w_, 'b i j -> b j i')
+ h_ = torch.einsum('bij,bjk->bik', v, w_)
+ h_ = rearrange(h_, 'b c (h w) -> b c h w', h=h)
+ h_ = self.proj_out(h_)
+
+ return x+h_
+
+
+class CrossAttention(nn.Module):
+ def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, dropout=0.):
+ super().__init__()
+ inner_dim = dim_head * heads
+ context_dim = default(context_dim, query_dim)
+
+ self.scale = dim_head ** -0.5
+ self.heads = heads
+
+ self.to_q = nn.Linear(query_dim, inner_dim, bias=False)
+ self.to_k = nn.Linear(context_dim, inner_dim, bias=False)
+ self.to_v = nn.Linear(context_dim, inner_dim, bias=False)
+
+ self.to_out = nn.Sequential(
+ nn.Linear(inner_dim, query_dim),
+ nn.Dropout(dropout)
+ )
+
+ def forward(self, x, context=None, mask=None):
+
+ h = self.heads
+
+ # breakpoint()
+ q = self.to_q(x)
+ context = default(context, x)
+ k = self.to_k(context)
+ v = self.to_v(context)
+ # breakpoint()
+ if len(k.shape) == 2:
+ k = rearrange(k, 'b d -> b 1 d')
+ v = rearrange(v, 'b d -> b 1 d')
+ k = repeat(k, 'b 1 d -> b n d', n=q.shape[1])
+ v = repeat(v, 'b 1 d -> b n d', n=q.shape[1])
+
+ q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> (b h) n d', h=h), (q, k, v))
+
+ # force cast to fp32 to avoid overflowing
+ if _ATTN_PRECISION =="fp32":
+ with torch.autocast(enabled=False, device_type = 'cuda'):
+ q, k = q.float(), k.float()
+ sim = einsum('b i d, b j d -> b i j', q, k) * self.scale
+ else:
+ sim = einsum('b i d, b j d -> b i j', q, k) * self.scale
+
+ del q, k
+
+ if exists(mask):
+ mask = rearrange(mask, 'b ... -> b (...)')
+ max_neg_value = -torch.finfo(sim.dtype).max
+ mask = repeat(mask, 'b j -> (b h) () j', h=h)
+ sim.masked_fill_(~mask, max_neg_value)
+
+ # attention, what we cannot get enough of
+ sim = sim.softmax(dim=-1)
+
+ out = einsum('b i j, b j d -> b i d', sim, v)
+ out = rearrange(out, '(b h) n d -> b n (h d)', h=h)
+ return self.to_out(out)
+
+
+class MemoryEfficientCrossAttention(nn.Module):
+ # https://github.com/MatthieuTPHR/diffusers/blob/d80b531ff8060ec1ea982b65a1b8df70f73aa67c/src/diffusers/models/attention.py#L223
+ def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, dropout=0.0):
+ super().__init__()
+ print(f"Setting up {self.__class__.__name__}. Query dim is {query_dim}, context_dim is {context_dim} and using "
+ f"{heads} heads.")
+ inner_dim = dim_head * heads
+ context_dim = default(context_dim, query_dim)
+
+ self.heads = heads
+ self.dim_head = dim_head
+
+ self.to_q = nn.Linear(query_dim, inner_dim, bias=False)
+ self.to_k = nn.Linear(context_dim, inner_dim, bias=False)
+ self.to_v = nn.Linear(context_dim, inner_dim, bias=False)
+
+ self.to_out = nn.Sequential(nn.Linear(inner_dim, query_dim), nn.Dropout(dropout))
+ self.attention_op: Optional[Any] = None
+
+ def forward(self, x, context=None, mask=None):
+ q = self.to_q(x)
+ context = default(context, x)
+ k = self.to_k(context)
+ v = self.to_v(context)
+
+ b, _, _ = q.shape
+ q, k, v = map(
+ lambda t: t.unsqueeze(3)
+ .reshape(b, t.shape[1], self.heads, self.dim_head)
+ .permute(0, 2, 1, 3)
+ .reshape(b * self.heads, t.shape[1], self.dim_head)
+ .contiguous(),
+ (q, k, v),
+ )
+
+ # actually compute the attention, what we cannot get enough of
+ out = xformers.ops.memory_efficient_attention(q, k, v, attn_bias=None, op=self.attention_op)
+
+ if exists(mask):
+ raise NotImplementedError
+ out = (
+ out.unsqueeze(0)
+ .reshape(b, self.heads, out.shape[1], self.dim_head)
+ .permute(0, 2, 1, 3)
+ .reshape(b, out.shape[1], self.heads * self.dim_head)
+ )
+ return self.to_out(out)
+
+
+class BasicTransformerBlock(nn.Module):
+ ATTENTION_MODES = {
+ "softmax": CrossAttention, # vanilla attention
+ "softmax-xformers": MemoryEfficientCrossAttention
+ }
+ def __init__(self, dim, n_heads, d_head, dropout=0., context_dim=None, gated_ff=True, checkpoint=True,
+ disable_self_attn=False):
+ super().__init__()
+ attn_mode = "softmax-xformers" if XFORMERS_IS_AVAILBLE else "softmax"
+ # breakpoint()
+ assert attn_mode in self.ATTENTION_MODES
+ attn_cls = self.ATTENTION_MODES[attn_mode]
+ self.disable_self_attn = disable_self_attn
+ self.attn1 = attn_cls(query_dim=dim, heads=n_heads, dim_head=d_head, dropout=dropout,
+ context_dim=context_dim if self.disable_self_attn else None) # is a self-attention if not self.disable_self_attn
+ self.ff = FeedForward(dim, dropout=dropout, glu=gated_ff)
+ self.attn2 = attn_cls(query_dim=dim, context_dim=context_dim,
+ heads=n_heads, dim_head=d_head, dropout=dropout) # is self-attn if context is none
+ self.norm1 = nn.LayerNorm(dim)
+ self.norm2 = nn.LayerNorm(dim)
+ self.norm3 = nn.LayerNorm(dim)
+ self.checkpoint = checkpoint
+
+ def forward(self, x, context=None):
+ return checkpoint(self._forward, (x, context), self.parameters(), self.checkpoint)
+
+ def _forward(self, x, context=None):
+ x = self.attn1(self.norm1(x), context=context if self.disable_self_attn else None) + x
+ x = self.attn2(self.norm2(x), context=context) + x
+ x = self.ff(self.norm3(x)) + x
+ return x
+
+
+class SpatialTransformer(nn.Module):
+ """
+ Transformer block for image-like data.
+ First, project the input (aka embedding)
+ and reshape to b, t, d.
+ Then apply standard transformer action.
+ Finally, reshape to image
+ NEW: use_linear for more efficiency instead of the 1x1 convs
+ """
+ def __init__(self, in_channels, n_heads, d_head,
+ depth=1, dropout=0., context_dim=None,
+ disable_self_attn=False, use_linear=False,
+ use_checkpoint=True):
+ super().__init__()
+ if exists(context_dim) and not isinstance(context_dim, list):
+ context_dim = [context_dim]
+ self.in_channels = in_channels
+ inner_dim = n_heads * d_head
+ self.norm = Normalize(in_channels)
+ if not use_linear:
+ self.proj_in = nn.Conv2d(in_channels,
+ inner_dim,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ else:
+ self.proj_in = nn.Linear(in_channels, inner_dim)
+
+ self.transformer_blocks = nn.ModuleList(
+ [BasicTransformerBlock(inner_dim, n_heads, d_head, dropout=dropout, context_dim=context_dim[d],
+ disable_self_attn=disable_self_attn, checkpoint=use_checkpoint)
+ for d in range(depth)]
+ )
+ if not use_linear:
+ self.proj_out = zero_module(nn.Conv2d(inner_dim,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0))
+ else:
+ self.proj_out = zero_module(nn.Linear(in_channels, inner_dim))
+ self.use_linear = use_linear
+
+ def forward(self, x, context=None):
+ # note: if no context is given, cross-attention defaults to self-attention
+ if not isinstance(context, list):
+ context = [context]
+ b, c, h, w = x.shape
+ x_in = x
+ x = self.norm(x)
+ # breakpoint()
+ if not self.use_linear:
+ x = self.proj_in(x)
+
+ x = rearrange(x, 'b c h w -> b (h w) c').contiguous()
+ # context = [rearrange(context[0], 'b c h w -> b (h w) c').contiguous()]
+ # breakpoint()
+ if self.use_linear:
+ x = self.proj_in(x)
+ for i, block in enumerate(self.transformer_blocks):
+ x = block(x, context=context[i])
+ if self.use_linear:
+ x = self.proj_out(x)
+ x = rearrange(x, 'b (h w) c -> b c h w', h=h, w=w).contiguous()
+ if not self.use_linear:
+ x = self.proj_out(x)
+ return x + x_in
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..49a11c2752f92edbc14c7b3df671c720d42180d7
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8c359b9488fb5fc2134d55474aad213191ee2292
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9957382e78468ef32a1d8741dbf6f3bf42201adf
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6c8af124f58363874b0927ff071ba512044b52d7
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..64db44bbe625f72da0d16aaa90e077061cfdc3cf
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..05650ecad54d999d1d83d0416cd56d114fd0c872
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..257ffc36147da91e109292741e4caa563f7e233b
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c5f4af2aaef32b8316ff9620f4e0f0570be42739
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/model.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..919763cc23b5b24743d806f167b473ea6efd1625
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2ea3eb89a04e9066f5418b31ff36f46b84e3e100
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b1b2a1d87cae92f1d970d97836b45fb6d25e7faa
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1dbbf969af1bd91ac773f53d7976d732437fde48
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c6e03d4eae6781bf0c7d5559a6836cb571fb099c
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..abf2bfb8f352a95d08363657a505c2b8567f1847
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7e4845d6b37f0a7e72cc860455d8894270513c3a
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/openaimodel_pseudo3D.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..558f0947a6a9f11b2ae0a3bc453eeccb47ae3b02
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..61e75c17047da86fe39b94797519fcd907667ba6
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b92fc5516110d956ef16841845c5ae5e47649b74
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0cc3b0af0e71f88f664c7cf56fed8f392d0b93a5
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/__pycache__/util.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/model.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/model.py
new file mode 100644
index 0000000000000000000000000000000000000000..b089eebbe1676d8249005bb9def002ff5180715b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/model.py
@@ -0,0 +1,852 @@
+# pytorch_diffusion + derived encoder decoder
+import math
+import torch
+import torch.nn as nn
+import numpy as np
+from einops import rearrange
+from typing import Optional, Any
+
+from ldm.modules.attention import MemoryEfficientCrossAttention
+
+try:
+ import xformers
+ import xformers.ops
+ XFORMERS_IS_AVAILBLE = True
+except:
+ XFORMERS_IS_AVAILBLE = False
+ print("No module 'xformers'. Proceeding without it.")
+
+
+def get_timestep_embedding(timesteps, embedding_dim):
+ """
+ This matches the implementation in Denoising Diffusion Probabilistic Models:
+ From Fairseq.
+ Build sinusoidal embeddings.
+ This matches the implementation in tensor2tensor, but differs slightly
+ from the description in Section 3.5 of "Attention Is All You Need".
+ """
+ assert len(timesteps.shape) == 1
+
+ half_dim = embedding_dim // 2
+ emb = math.log(10000) / (half_dim - 1)
+ emb = torch.exp(torch.arange(half_dim, dtype=torch.float32) * -emb)
+ emb = emb.to(device=timesteps.device)
+ emb = timesteps.float()[:, None] * emb[None, :]
+ emb = torch.cat([torch.sin(emb), torch.cos(emb)], dim=1)
+ if embedding_dim % 2 == 1: # zero pad
+ emb = torch.nn.functional.pad(emb, (0,1,0,0))
+ return emb
+
+
+def nonlinearity(x):
+ # swish
+ return x*torch.sigmoid(x)
+
+
+def Normalize(in_channels, num_groups=32):
+ return torch.nn.GroupNorm(num_groups=num_groups, num_channels=in_channels, eps=1e-6, affine=True)
+
+
+class Upsample(nn.Module):
+ def __init__(self, in_channels, with_conv):
+ super().__init__()
+ self.with_conv = with_conv
+ if self.with_conv:
+ self.conv = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ def forward(self, x):
+ x = torch.nn.functional.interpolate(x, scale_factor=2.0, mode="nearest")
+ if self.with_conv:
+ x = self.conv(x)
+ return x
+
+
+class Downsample(nn.Module):
+ def __init__(self, in_channels, with_conv):
+ super().__init__()
+ self.with_conv = with_conv
+ if self.with_conv:
+ # no asymmetric padding in torch conv, must do it ourselves
+ self.conv = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=3,
+ stride=2,
+ padding=0)
+
+ def forward(self, x):
+ if self.with_conv:
+ pad = (0,1,0,1)
+ x = torch.nn.functional.pad(x, pad, mode="constant", value=0)
+ x = self.conv(x)
+ else:
+ x = torch.nn.functional.avg_pool2d(x, kernel_size=2, stride=2)
+ return x
+
+
+class ResnetBlock(nn.Module):
+ def __init__(self, *, in_channels, out_channels=None, conv_shortcut=False,
+ dropout, temb_channels=512):
+ super().__init__()
+ self.in_channels = in_channels
+ out_channels = in_channels if out_channels is None else out_channels
+ self.out_channels = out_channels
+ self.use_conv_shortcut = conv_shortcut
+
+ self.norm1 = Normalize(in_channels)
+ self.conv1 = torch.nn.Conv2d(in_channels,
+ out_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+ if temb_channels > 0:
+ self.temb_proj = torch.nn.Linear(temb_channels,
+ out_channels)
+ self.norm2 = Normalize(out_channels)
+ self.dropout = torch.nn.Dropout(dropout)
+ self.conv2 = torch.nn.Conv2d(out_channels,
+ out_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+ if self.in_channels != self.out_channels:
+ if self.use_conv_shortcut:
+ self.conv_shortcut = torch.nn.Conv2d(in_channels,
+ out_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+ else:
+ self.nin_shortcut = torch.nn.Conv2d(in_channels,
+ out_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+
+ def forward(self, x, temb):
+ h = x
+ h = self.norm1(h)
+ h = nonlinearity(h)
+ h = self.conv1(h)
+
+ if temb is not None:
+ h = h + self.temb_proj(nonlinearity(temb))[:,:,None,None]
+
+ h = self.norm2(h)
+ h = nonlinearity(h)
+ h = self.dropout(h)
+ h = self.conv2(h)
+
+ if self.in_channels != self.out_channels:
+ if self.use_conv_shortcut:
+ x = self.conv_shortcut(x)
+ else:
+ x = self.nin_shortcut(x)
+
+ return x+h
+
+
+class AttnBlock(nn.Module):
+ def __init__(self, in_channels):
+ super().__init__()
+ self.in_channels = in_channels
+
+ self.norm = Normalize(in_channels)
+ self.q = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.k = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.v = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.proj_out = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+
+ def forward(self, x):
+ h_ = x
+ h_ = self.norm(h_)
+ q = self.q(h_)
+ k = self.k(h_)
+ v = self.v(h_)
+
+ # compute attention
+ b,c,h,w = q.shape
+ q = q.reshape(b,c,h*w)
+ q = q.permute(0,2,1) # b,hw,c
+ k = k.reshape(b,c,h*w) # b,c,hw
+ w_ = torch.bmm(q,k) # b,hw,hw w[b,i,j]=sum_c q[b,i,c]k[b,c,j]
+ w_ = w_ * (int(c)**(-0.5))
+ w_ = torch.nn.functional.softmax(w_, dim=2)
+
+ # attend to values
+ v = v.reshape(b,c,h*w)
+ w_ = w_.permute(0,2,1) # b,hw,hw (first hw of k, second of q)
+ h_ = torch.bmm(v,w_) # b, c,hw (hw of q) h_[b,c,j] = sum_i v[b,c,i] w_[b,i,j]
+ h_ = h_.reshape(b,c,h,w)
+
+ h_ = self.proj_out(h_)
+
+ return x+h_
+
+class MemoryEfficientAttnBlock(nn.Module):
+ """
+ Uses xformers efficient implementation,
+ see https://github.com/MatthieuTPHR/diffusers/blob/d80b531ff8060ec1ea982b65a1b8df70f73aa67c/src/diffusers/models/attention.py#L223
+ Note: this is a single-head self-attention operation
+ """
+ #
+ def __init__(self, in_channels):
+ super().__init__()
+ self.in_channels = in_channels
+
+ self.norm = Normalize(in_channels)
+ self.q = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.k = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.v = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.proj_out = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=1,
+ stride=1,
+ padding=0)
+ self.attention_op: Optional[Any] = None
+
+ def forward(self, x):
+ h_ = x
+ h_ = self.norm(h_)
+ q = self.q(h_)
+ k = self.k(h_)
+ v = self.v(h_)
+
+ # compute attention
+ B, C, H, W = q.shape
+ q, k, v = map(lambda x: rearrange(x, 'b c h w -> b (h w) c'), (q, k, v))
+
+ q, k, v = map(
+ lambda t: t.unsqueeze(3)
+ .reshape(B, t.shape[1], 1, C)
+ .permute(0, 2, 1, 3)
+ .reshape(B * 1, t.shape[1], C)
+ .contiguous(),
+ (q, k, v),
+ )
+ out = xformers.ops.memory_efficient_attention(q, k, v, attn_bias=None, op=self.attention_op)
+
+ out = (
+ out.unsqueeze(0)
+ .reshape(B, 1, out.shape[1], C)
+ .permute(0, 2, 1, 3)
+ .reshape(B, out.shape[1], C)
+ )
+ out = rearrange(out, 'b (h w) c -> b c h w', b=B, h=H, w=W, c=C)
+ out = self.proj_out(out)
+ return x+out
+
+
+class MemoryEfficientCrossAttentionWrapper(MemoryEfficientCrossAttention):
+ def forward(self, x, context=None, mask=None):
+ b, c, h, w = x.shape
+ x = rearrange(x, 'b c h w -> b (h w) c')
+ out = super().forward(x, context=context, mask=mask)
+ out = rearrange(out, 'b (h w) c -> b c h w', h=h, w=w, c=c)
+ return x + out
+
+
+def make_attn(in_channels, attn_type="vanilla", attn_kwargs=None):
+ assert attn_type in ["vanilla", "vanilla-xformers", "memory-efficient-cross-attn", "linear", "none"], f'attn_type {attn_type} unknown'
+ if XFORMERS_IS_AVAILBLE and attn_type == "vanilla":
+ attn_type = "vanilla-xformers"
+ print(f"making attention of type '{attn_type}' with {in_channels} in_channels")
+ if attn_type == "vanilla":
+ assert attn_kwargs is None
+ return AttnBlock(in_channels)
+ elif attn_type == "vanilla-xformers":
+ print(f"building MemoryEfficientAttnBlock with {in_channels} in_channels...")
+ return MemoryEfficientAttnBlock(in_channels)
+ elif type == "memory-efficient-cross-attn":
+ attn_kwargs["query_dim"] = in_channels
+ return MemoryEfficientCrossAttentionWrapper(**attn_kwargs)
+ elif attn_type == "none":
+ return nn.Identity(in_channels)
+ else:
+ raise NotImplementedError()
+
+
+class Model(nn.Module):
+ def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
+ attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels,
+ resolution, use_timestep=True, use_linear_attn=False, attn_type="vanilla"):
+ super().__init__()
+ if use_linear_attn: attn_type = "linear"
+ self.ch = ch
+ self.temb_ch = self.ch*4
+ self.num_resolutions = len(ch_mult)
+ self.num_res_blocks = num_res_blocks
+ self.resolution = resolution
+ self.in_channels = in_channels
+
+ self.use_timestep = use_timestep
+ if self.use_timestep:
+ # timestep embedding
+ self.temb = nn.Module()
+ self.temb.dense = nn.ModuleList([
+ torch.nn.Linear(self.ch,
+ self.temb_ch),
+ torch.nn.Linear(self.temb_ch,
+ self.temb_ch),
+ ])
+
+ # downsampling
+ self.conv_in = torch.nn.Conv2d(in_channels,
+ self.ch,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ curr_res = resolution
+ in_ch_mult = (1,)+tuple(ch_mult)
+ self.down = nn.ModuleList()
+ for i_level in range(self.num_resolutions):
+ block = nn.ModuleList()
+ attn = nn.ModuleList()
+ block_in = ch*in_ch_mult[i_level]
+ block_out = ch*ch_mult[i_level]
+ for i_block in range(self.num_res_blocks):
+ block.append(ResnetBlock(in_channels=block_in,
+ out_channels=block_out,
+ temb_channels=self.temb_ch,
+ dropout=dropout))
+ block_in = block_out
+ if curr_res in attn_resolutions:
+ attn.append(make_attn(block_in, attn_type=attn_type))
+ down = nn.Module()
+ down.block = block
+ down.attn = attn
+ if i_level != self.num_resolutions-1:
+ down.downsample = Downsample(block_in, resamp_with_conv)
+ curr_res = curr_res // 2
+ self.down.append(down)
+
+ # middle
+ self.mid = nn.Module()
+ self.mid.block_1 = ResnetBlock(in_channels=block_in,
+ out_channels=block_in,
+ temb_channels=self.temb_ch,
+ dropout=dropout)
+ self.mid.attn_1 = make_attn(block_in, attn_type=attn_type)
+ self.mid.block_2 = ResnetBlock(in_channels=block_in,
+ out_channels=block_in,
+ temb_channels=self.temb_ch,
+ dropout=dropout)
+
+ # upsampling
+ self.up = nn.ModuleList()
+ for i_level in reversed(range(self.num_resolutions)):
+ block = nn.ModuleList()
+ attn = nn.ModuleList()
+ block_out = ch*ch_mult[i_level]
+ skip_in = ch*ch_mult[i_level]
+ for i_block in range(self.num_res_blocks+1):
+ if i_block == self.num_res_blocks:
+ skip_in = ch*in_ch_mult[i_level]
+ block.append(ResnetBlock(in_channels=block_in+skip_in,
+ out_channels=block_out,
+ temb_channels=self.temb_ch,
+ dropout=dropout))
+ block_in = block_out
+ if curr_res in attn_resolutions:
+ attn.append(make_attn(block_in, attn_type=attn_type))
+ up = nn.Module()
+ up.block = block
+ up.attn = attn
+ if i_level != 0:
+ up.upsample = Upsample(block_in, resamp_with_conv)
+ curr_res = curr_res * 2
+ self.up.insert(0, up) # prepend to get consistent order
+
+ # end
+ self.norm_out = Normalize(block_in)
+ self.conv_out = torch.nn.Conv2d(block_in,
+ out_ch,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ def forward(self, x, t=None, context=None):
+ #assert x.shape[2] == x.shape[3] == self.resolution
+ if context is not None:
+ # assume aligned context, cat along channel axis
+ x = torch.cat((x, context), dim=1)
+ if self.use_timestep:
+ # timestep embedding
+ assert t is not None
+ temb = get_timestep_embedding(t, self.ch)
+ temb = self.temb.dense[0](temb)
+ temb = nonlinearity(temb)
+ temb = self.temb.dense[1](temb)
+ else:
+ temb = None
+
+ # downsampling
+ hs = [self.conv_in(x)]
+ for i_level in range(self.num_resolutions):
+ for i_block in range(self.num_res_blocks):
+ h = self.down[i_level].block[i_block](hs[-1], temb)
+ if len(self.down[i_level].attn) > 0:
+ h = self.down[i_level].attn[i_block](h)
+ hs.append(h)
+ if i_level != self.num_resolutions-1:
+ hs.append(self.down[i_level].downsample(hs[-1]))
+
+ # middle
+ h = hs[-1]
+ h = self.mid.block_1(h, temb)
+ h = self.mid.attn_1(h)
+ h = self.mid.block_2(h, temb)
+
+ # upsampling
+ for i_level in reversed(range(self.num_resolutions)):
+ for i_block in range(self.num_res_blocks+1):
+ h = self.up[i_level].block[i_block](
+ torch.cat([h, hs.pop()], dim=1), temb)
+ if len(self.up[i_level].attn) > 0:
+ h = self.up[i_level].attn[i_block](h)
+ if i_level != 0:
+ h = self.up[i_level].upsample(h)
+
+ # end
+ h = self.norm_out(h)
+ h = nonlinearity(h)
+ h = self.conv_out(h)
+ return h
+
+ def get_last_layer(self):
+ return self.conv_out.weight
+
+
+class Encoder(nn.Module):
+ def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
+ attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels,
+ resolution, z_channels, double_z=True, use_linear_attn=False, attn_type="vanilla",
+ **ignore_kwargs):
+ super().__init__()
+ if use_linear_attn: attn_type = "linear"
+ self.ch = ch
+ self.temb_ch = 0
+ self.num_resolutions = len(ch_mult)
+ self.num_res_blocks = num_res_blocks
+ self.resolution = resolution
+ self.in_channels = in_channels
+
+ # downsampling
+ self.conv_in = torch.nn.Conv2d(in_channels,
+ self.ch,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ curr_res = resolution
+ in_ch_mult = (1,)+tuple(ch_mult)
+ self.in_ch_mult = in_ch_mult
+ self.down = nn.ModuleList()
+ for i_level in range(self.num_resolutions):
+ block = nn.ModuleList()
+ attn = nn.ModuleList()
+ block_in = ch*in_ch_mult[i_level]
+ block_out = ch*ch_mult[i_level]
+ for i_block in range(self.num_res_blocks):
+ block.append(ResnetBlock(in_channels=block_in,
+ out_channels=block_out,
+ temb_channels=self.temb_ch,
+ dropout=dropout))
+ block_in = block_out
+ if curr_res in attn_resolutions:
+ attn.append(make_attn(block_in, attn_type=attn_type))
+ down = nn.Module()
+ down.block = block
+ down.attn = attn
+ if i_level != self.num_resolutions-1:
+ down.downsample = Downsample(block_in, resamp_with_conv)
+ curr_res = curr_res // 2
+ self.down.append(down)
+
+ # middle
+ self.mid = nn.Module()
+ self.mid.block_1 = ResnetBlock(in_channels=block_in,
+ out_channels=block_in,
+ temb_channels=self.temb_ch,
+ dropout=dropout)
+ self.mid.attn_1 = make_attn(block_in, attn_type=attn_type)
+ self.mid.block_2 = ResnetBlock(in_channels=block_in,
+ out_channels=block_in,
+ temb_channels=self.temb_ch,
+ dropout=dropout)
+
+ # end
+ self.norm_out = Normalize(block_in)
+ self.conv_out = torch.nn.Conv2d(block_in,
+ 2*z_channels if double_z else z_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ def forward(self, x):
+ # timestep embedding
+ temb = None
+
+ # downsampling
+ hs = [self.conv_in(x)]
+ for i_level in range(self.num_resolutions):
+ for i_block in range(self.num_res_blocks):
+ h = self.down[i_level].block[i_block](hs[-1], temb)
+ if len(self.down[i_level].attn) > 0:
+ h = self.down[i_level].attn[i_block](h)
+ hs.append(h)
+ if i_level != self.num_resolutions-1:
+ hs.append(self.down[i_level].downsample(hs[-1]))
+
+ # middle
+ h = hs[-1]
+ h = self.mid.block_1(h, temb)
+ h = self.mid.attn_1(h)
+ h = self.mid.block_2(h, temb)
+
+ # end
+ h = self.norm_out(h)
+ h = nonlinearity(h)
+ h = self.conv_out(h)
+ return h
+
+
+class Decoder(nn.Module):
+ def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
+ attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels,
+ resolution, z_channels, give_pre_end=False, tanh_out=False, use_linear_attn=False,
+ attn_type="vanilla", **ignorekwargs):
+ super().__init__()
+ if use_linear_attn: attn_type = "linear"
+ self.ch = ch
+ self.temb_ch = 0
+ self.num_resolutions = len(ch_mult)
+ self.num_res_blocks = num_res_blocks
+ self.resolution = resolution
+ self.in_channels = in_channels
+ self.give_pre_end = give_pre_end
+ self.tanh_out = tanh_out
+
+ # compute in_ch_mult, block_in and curr_res at lowest res
+ in_ch_mult = (1,)+tuple(ch_mult)
+ block_in = ch*ch_mult[self.num_resolutions-1]
+ curr_res = resolution // 2**(self.num_resolutions-1)
+ self.z_shape = (1,z_channels,curr_res,curr_res)
+ print("Working with z of shape {} = {} dimensions.".format(
+ self.z_shape, np.prod(self.z_shape)))
+
+ # z to block_in
+ self.conv_in = torch.nn.Conv2d(z_channels,
+ block_in,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ # middle
+ self.mid = nn.Module()
+ self.mid.block_1 = ResnetBlock(in_channels=block_in,
+ out_channels=block_in,
+ temb_channels=self.temb_ch,
+ dropout=dropout)
+ self.mid.attn_1 = make_attn(block_in, attn_type=attn_type)
+ self.mid.block_2 = ResnetBlock(in_channels=block_in,
+ out_channels=block_in,
+ temb_channels=self.temb_ch,
+ dropout=dropout)
+
+ # upsampling
+ self.up = nn.ModuleList()
+ for i_level in reversed(range(self.num_resolutions)):
+ block = nn.ModuleList()
+ attn = nn.ModuleList()
+ block_out = ch*ch_mult[i_level]
+ for i_block in range(self.num_res_blocks+1):
+ block.append(ResnetBlock(in_channels=block_in,
+ out_channels=block_out,
+ temb_channels=self.temb_ch,
+ dropout=dropout))
+ block_in = block_out
+ if curr_res in attn_resolutions:
+ attn.append(make_attn(block_in, attn_type=attn_type))
+ up = nn.Module()
+ up.block = block
+ up.attn = attn
+ if i_level != 0:
+ up.upsample = Upsample(block_in, resamp_with_conv)
+ curr_res = curr_res * 2
+ self.up.insert(0, up) # prepend to get consistent order
+
+ # end
+ self.norm_out = Normalize(block_in)
+ self.conv_out = torch.nn.Conv2d(block_in,
+ out_ch,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ def forward(self, z):
+ #assert z.shape[1:] == self.z_shape[1:]
+ self.last_z_shape = z.shape
+
+ # timestep embedding
+ temb = None
+
+ # z to block_in
+ h = self.conv_in(z)
+
+ # middle
+ h = self.mid.block_1(h, temb)
+ h = self.mid.attn_1(h)
+ h = self.mid.block_2(h, temb)
+
+ # upsampling
+ for i_level in reversed(range(self.num_resolutions)):
+ for i_block in range(self.num_res_blocks+1):
+ h = self.up[i_level].block[i_block](h, temb)
+ if len(self.up[i_level].attn) > 0:
+ h = self.up[i_level].attn[i_block](h)
+ if i_level != 0:
+ h = self.up[i_level].upsample(h)
+
+ # end
+ if self.give_pre_end:
+ return h
+
+ h = self.norm_out(h)
+ h = nonlinearity(h)
+ h = self.conv_out(h)
+ if self.tanh_out:
+ h = torch.tanh(h)
+ return h
+
+
+class SimpleDecoder(nn.Module):
+ def __init__(self, in_channels, out_channels, *args, **kwargs):
+ super().__init__()
+ self.model = nn.ModuleList([nn.Conv2d(in_channels, in_channels, 1),
+ ResnetBlock(in_channels=in_channels,
+ out_channels=2 * in_channels,
+ temb_channels=0, dropout=0.0),
+ ResnetBlock(in_channels=2 * in_channels,
+ out_channels=4 * in_channels,
+ temb_channels=0, dropout=0.0),
+ ResnetBlock(in_channels=4 * in_channels,
+ out_channels=2 * in_channels,
+ temb_channels=0, dropout=0.0),
+ nn.Conv2d(2*in_channels, in_channels, 1),
+ Upsample(in_channels, with_conv=True)])
+ # end
+ self.norm_out = Normalize(in_channels)
+ self.conv_out = torch.nn.Conv2d(in_channels,
+ out_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ def forward(self, x):
+ for i, layer in enumerate(self.model):
+ if i in [1,2,3]:
+ x = layer(x, None)
+ else:
+ x = layer(x)
+
+ h = self.norm_out(x)
+ h = nonlinearity(h)
+ x = self.conv_out(h)
+ return x
+
+
+class UpsampleDecoder(nn.Module):
+ def __init__(self, in_channels, out_channels, ch, num_res_blocks, resolution,
+ ch_mult=(2,2), dropout=0.0):
+ super().__init__()
+ # upsampling
+ self.temb_ch = 0
+ self.num_resolutions = len(ch_mult)
+ self.num_res_blocks = num_res_blocks
+ block_in = in_channels
+ curr_res = resolution // 2 ** (self.num_resolutions - 1)
+ self.res_blocks = nn.ModuleList()
+ self.upsample_blocks = nn.ModuleList()
+ for i_level in range(self.num_resolutions):
+ res_block = []
+ block_out = ch * ch_mult[i_level]
+ for i_block in range(self.num_res_blocks + 1):
+ res_block.append(ResnetBlock(in_channels=block_in,
+ out_channels=block_out,
+ temb_channels=self.temb_ch,
+ dropout=dropout))
+ block_in = block_out
+ self.res_blocks.append(nn.ModuleList(res_block))
+ if i_level != self.num_resolutions - 1:
+ self.upsample_blocks.append(Upsample(block_in, True))
+ curr_res = curr_res * 2
+
+ # end
+ self.norm_out = Normalize(block_in)
+ self.conv_out = torch.nn.Conv2d(block_in,
+ out_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+
+ def forward(self, x):
+ # upsampling
+ h = x
+ for k, i_level in enumerate(range(self.num_resolutions)):
+ for i_block in range(self.num_res_blocks + 1):
+ h = self.res_blocks[i_level][i_block](h, None)
+ if i_level != self.num_resolutions - 1:
+ h = self.upsample_blocks[k](h)
+ h = self.norm_out(h)
+ h = nonlinearity(h)
+ h = self.conv_out(h)
+ return h
+
+
+class LatentRescaler(nn.Module):
+ def __init__(self, factor, in_channels, mid_channels, out_channels, depth=2):
+ super().__init__()
+ # residual block, interpolate, residual block
+ self.factor = factor
+ self.conv_in = nn.Conv2d(in_channels,
+ mid_channels,
+ kernel_size=3,
+ stride=1,
+ padding=1)
+ self.res_block1 = nn.ModuleList([ResnetBlock(in_channels=mid_channels,
+ out_channels=mid_channels,
+ temb_channels=0,
+ dropout=0.0) for _ in range(depth)])
+ self.attn = AttnBlock(mid_channels)
+ self.res_block2 = nn.ModuleList([ResnetBlock(in_channels=mid_channels,
+ out_channels=mid_channels,
+ temb_channels=0,
+ dropout=0.0) for _ in range(depth)])
+
+ self.conv_out = nn.Conv2d(mid_channels,
+ out_channels,
+ kernel_size=1,
+ )
+
+ def forward(self, x):
+ x = self.conv_in(x)
+ for block in self.res_block1:
+ x = block(x, None)
+ x = torch.nn.functional.interpolate(x, size=(int(round(x.shape[2]*self.factor)), int(round(x.shape[3]*self.factor))))
+ x = self.attn(x)
+ for block in self.res_block2:
+ x = block(x, None)
+ x = self.conv_out(x)
+ return x
+
+
+class MergedRescaleEncoder(nn.Module):
+ def __init__(self, in_channels, ch, resolution, out_ch, num_res_blocks,
+ attn_resolutions, dropout=0.0, resamp_with_conv=True,
+ ch_mult=(1,2,4,8), rescale_factor=1.0, rescale_module_depth=1):
+ super().__init__()
+ intermediate_chn = ch * ch_mult[-1]
+ self.encoder = Encoder(in_channels=in_channels, num_res_blocks=num_res_blocks, ch=ch, ch_mult=ch_mult,
+ z_channels=intermediate_chn, double_z=False, resolution=resolution,
+ attn_resolutions=attn_resolutions, dropout=dropout, resamp_with_conv=resamp_with_conv,
+ out_ch=None)
+ self.rescaler = LatentRescaler(factor=rescale_factor, in_channels=intermediate_chn,
+ mid_channels=intermediate_chn, out_channels=out_ch, depth=rescale_module_depth)
+
+ def forward(self, x):
+ x = self.encoder(x)
+ x = self.rescaler(x)
+ return x
+
+
+class MergedRescaleDecoder(nn.Module):
+ def __init__(self, z_channels, out_ch, resolution, num_res_blocks, attn_resolutions, ch, ch_mult=(1,2,4,8),
+ dropout=0.0, resamp_with_conv=True, rescale_factor=1.0, rescale_module_depth=1):
+ super().__init__()
+ tmp_chn = z_channels*ch_mult[-1]
+ self.decoder = Decoder(out_ch=out_ch, z_channels=tmp_chn, attn_resolutions=attn_resolutions, dropout=dropout,
+ resamp_with_conv=resamp_with_conv, in_channels=None, num_res_blocks=num_res_blocks,
+ ch_mult=ch_mult, resolution=resolution, ch=ch)
+ self.rescaler = LatentRescaler(factor=rescale_factor, in_channels=z_channels, mid_channels=tmp_chn,
+ out_channels=tmp_chn, depth=rescale_module_depth)
+
+ def forward(self, x):
+ x = self.rescaler(x)
+ x = self.decoder(x)
+ return x
+
+
+class Upsampler(nn.Module):
+ def __init__(self, in_size, out_size, in_channels, out_channels, ch_mult=2):
+ super().__init__()
+ assert out_size >= in_size
+ num_blocks = int(np.log2(out_size//in_size))+1
+ factor_up = 1.+ (out_size % in_size)
+ print(f"Building {self.__class__.__name__} with in_size: {in_size} --> out_size {out_size} and factor {factor_up}")
+ self.rescaler = LatentRescaler(factor=factor_up, in_channels=in_channels, mid_channels=2*in_channels,
+ out_channels=in_channels)
+ self.decoder = Decoder(out_ch=out_channels, resolution=out_size, z_channels=in_channels, num_res_blocks=2,
+ attn_resolutions=[], in_channels=None, ch=in_channels,
+ ch_mult=[ch_mult for _ in range(num_blocks)])
+
+ def forward(self, x):
+ x = self.rescaler(x)
+ x = self.decoder(x)
+ return x
+
+
+class Resize(nn.Module):
+ def __init__(self, in_channels=None, learned=False, mode="bilinear"):
+ super().__init__()
+ self.with_conv = learned
+ self.mode = mode
+ if self.with_conv:
+ print(f"Note: {self.__class__.__name} uses learned downsampling and will ignore the fixed {mode} mode")
+ raise NotImplementedError()
+ assert in_channels is not None
+ # no asymmetric padding in torch conv, must do it ourselves
+ self.conv = torch.nn.Conv2d(in_channels,
+ in_channels,
+ kernel_size=4,
+ stride=2,
+ padding=1)
+
+ def forward(self, x, scale_factor=1.0):
+ if scale_factor==1.0:
+ return x
+ else:
+ x = torch.nn.functional.interpolate(x, mode=self.mode, align_corners=False, scale_factor=scale_factor)
+ return x
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel.py
new file mode 100644
index 0000000000000000000000000000000000000000..af442ac6b189aa0cc558126373e7a104afd31556
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel.py
@@ -0,0 +1,788 @@
+from abc import abstractmethod
+import math
+
+import numpy as np
+import torch as th
+import torch.nn as nn
+import torch.nn.functional as F
+
+from ldm.modules.diffusionmodules.util import (
+ checkpoint,
+ conv_nd,
+ linear,
+ avg_pool_nd,
+ zero_module,
+ normalization,
+ timestep_embedding,
+)
+from ldm.modules.attention import SpatialTransformer
+from ldm.util import exists
+
+
+# dummy replace
+def convert_module_to_f16(x):
+ pass
+
+def convert_module_to_f32(x):
+ pass
+
+
+## go
+class AttentionPool2d(nn.Module):
+ """
+ Adapted from CLIP: https://github.com/openai/CLIP/blob/main/clip/model.py
+ """
+
+ def __init__(
+ self,
+ spacial_dim: int,
+ embed_dim: int,
+ num_heads_channels: int,
+ output_dim: int = None,
+ ):
+ super().__init__()
+ self.positional_embedding = nn.Parameter(th.randn(embed_dim, spacial_dim ** 2 + 1) / embed_dim ** 0.5)
+ self.qkv_proj = conv_nd(1, embed_dim, 3 * embed_dim, 1)
+ self.c_proj = conv_nd(1, embed_dim, output_dim or embed_dim, 1)
+ self.num_heads = embed_dim // num_heads_channels
+ self.attention = QKVAttention(self.num_heads)
+
+ def forward(self, x):
+ b, c, *_spatial = x.shape
+ x = x.reshape(b, c, -1) # NC(HW)
+ x = th.cat([x.mean(dim=-1, keepdim=True), x], dim=-1) # NC(HW+1)
+ x = x + self.positional_embedding[None, :, :].to(x.dtype) # NC(HW+1)
+ x = self.qkv_proj(x)
+ x = self.attention(x)
+ x = self.c_proj(x)
+ return x[:, :, 0]
+
+
+class TimestepBlock(nn.Module):
+ """
+ Any module where forward() takes timestep embeddings as a second argument.
+ """
+
+ @abstractmethod
+ def forward(self, x, emb):
+ """
+ Apply the module to `x` given `emb` timestep embeddings.
+ """
+
+
+class TimestepEmbedSequential(nn.Sequential, TimestepBlock):
+ """
+ A sequential module that passes timestep embeddings to the children that
+ support it as an extra input.
+ """
+
+ def forward(self, x, emb, context=None):
+ for layer in self:
+ if isinstance(layer, TimestepBlock):
+ x = layer(x, emb)
+ elif isinstance(layer, SpatialTransformer):
+ x = layer(x, context)
+ else:
+ x = layer(x)
+ return x
+
+
+class Upsample(nn.Module):
+ """
+ An upsampling layer with an optional convolution.
+ :param channels: channels in the inputs and outputs.
+ :param use_conv: a bool determining if a convolution is applied.
+ :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then
+ upsampling occurs in the inner-two dimensions.
+ """
+
+ def __init__(self, channels, use_conv, dims=2, out_channels=None, padding=1):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.dims = dims
+ if use_conv:
+ self.conv = conv_nd(dims, self.channels, self.out_channels, 3, padding=padding)
+
+ def forward(self, x):
+ assert x.shape[1] == self.channels
+ if self.dims == 3:
+ x = F.interpolate(
+ x, (x.shape[2], x.shape[3] * 2, x.shape[4] * 2), mode="nearest"
+ )
+ else:
+ x = F.interpolate(x, scale_factor=2, mode="nearest")
+ if self.use_conv:
+ x = self.conv(x)
+ return x
+
+class TransposedUpsample(nn.Module):
+ 'Learned 2x upsampling without padding'
+ def __init__(self, channels, out_channels=None, ks=5):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+
+ self.up = nn.ConvTranspose2d(self.channels,self.out_channels,kernel_size=ks,stride=2)
+
+ def forward(self,x):
+ return self.up(x)
+
+
+class Downsample(nn.Module):
+ """
+ A downsampling layer with an optional convolution.
+ :param channels: channels in the inputs and outputs.
+ :param use_conv: a bool determining if a convolution is applied.
+ :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then
+ downsampling occurs in the inner-two dimensions.
+ """
+
+ def __init__(self, channels, use_conv, dims=2, out_channels=None,padding=1):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.dims = dims
+ stride = 2 if dims != 3 else (1, 2, 2)
+ if use_conv:
+ self.op = conv_nd(
+ dims, self.channels, self.out_channels, 3, stride=stride, padding=padding
+ )
+ else:
+ assert self.channels == self.out_channels
+ self.op = avg_pool_nd(dims, kernel_size=stride, stride=stride)
+
+ def forward(self, x):
+ assert x.shape[1] == self.channels
+ return self.op(x)
+
+
+class ResBlock(TimestepBlock):
+ """
+ A residual block that can optionally change the number of channels.
+ :param channels: the number of input channels.
+ :param emb_channels: the number of timestep embedding channels.
+ :param dropout: the rate of dropout.
+ :param out_channels: if specified, the number of out channels.
+ :param use_conv: if True and out_channels is specified, use a spatial
+ convolution instead of a smaller 1x1 convolution to change the
+ channels in the skip connection.
+ :param dims: determines if the signal is 1D, 2D, or 3D.
+ :param use_checkpoint: if True, use gradient checkpointing on this module.
+ :param up: if True, use this block for upsampling.
+ :param down: if True, use this block for downsampling.
+ """
+
+ def __init__(
+ self,
+ channels,
+ emb_channels,
+ dropout,
+ out_channels=None,
+ use_conv=False,
+ use_scale_shift_norm=False,
+ dims=2,
+ use_checkpoint=False,
+ up=False,
+ down=False,
+ ):
+ super().__init__()
+ self.channels = channels
+ self.emb_channels = emb_channels
+ self.dropout = dropout
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.use_checkpoint = use_checkpoint
+ self.use_scale_shift_norm = use_scale_shift_norm
+
+ self.in_layers = nn.Sequential(
+ normalization(channels),
+ nn.SiLU(),
+ conv_nd(dims, channels, self.out_channels, 3, padding=1),
+ )
+
+ self.updown = up or down
+
+ if up:
+ self.h_upd = Upsample(channels, False, dims)
+ self.x_upd = Upsample(channels, False, dims)
+ elif down:
+ self.h_upd = Downsample(channels, False, dims)
+ self.x_upd = Downsample(channels, False, dims)
+ else:
+ self.h_upd = self.x_upd = nn.Identity()
+
+ self.emb_layers = nn.Sequential(
+ nn.SiLU(),
+ linear(
+ emb_channels,
+ 2 * self.out_channels if use_scale_shift_norm else self.out_channels,
+ ),
+ )
+ self.out_layers = nn.Sequential(
+ normalization(self.out_channels),
+ nn.SiLU(),
+ nn.Dropout(p=dropout),
+ zero_module(
+ conv_nd(dims, self.out_channels, self.out_channels, 3, padding=1)
+ ),
+ )
+
+ if self.out_channels == channels:
+ self.skip_connection = nn.Identity()
+ elif use_conv:
+ self.skip_connection = conv_nd(
+ dims, channels, self.out_channels, 3, padding=1
+ )
+ else:
+ self.skip_connection = conv_nd(dims, channels, self.out_channels, 1)
+
+ def forward(self, x, emb):
+ """
+ Apply the block to a Tensor, conditioned on a timestep embedding.
+ :param x: an [N x C x ...] Tensor of features.
+ :param emb: an [N x emb_channels] Tensor of timestep embeddings.
+ :return: an [N x C x ...] Tensor of outputs.
+ """
+ return checkpoint(
+ self._forward, (x, emb), self.parameters(), self.use_checkpoint
+ )
+
+
+ def _forward(self, x, emb):
+ if self.updown:
+ in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1]
+ h = in_rest(x)
+ h = self.h_upd(h)
+ x = self.x_upd(x)
+ h = in_conv(h)
+ else:
+ h = self.in_layers(x)
+ emb_out = self.emb_layers(emb).type(h.dtype)
+ while len(emb_out.shape) < len(h.shape):
+ emb_out = emb_out[..., None]
+ if self.use_scale_shift_norm:
+ out_norm, out_rest = self.out_layers[0], self.out_layers[1:]
+ scale, shift = th.chunk(emb_out, 2, dim=1)
+ h = out_norm(h) * (1 + scale) + shift
+ h = out_rest(h)
+ else:
+ h = h + emb_out
+ h = self.out_layers(h)
+ return self.skip_connection(x) + h
+
+
+class AttentionBlock(nn.Module):
+ """
+ An attention block that allows spatial positions to attend to each other.
+ Originally ported from here, but adapted to the N-d case.
+ https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/models/unet.py#L66.
+ """
+
+ def __init__(
+ self,
+ channels,
+ num_heads=1,
+ num_head_channels=-1,
+ use_checkpoint=False,
+ use_new_attention_order=False,
+ ):
+ super().__init__()
+ self.channels = channels
+ if num_head_channels == -1:
+ self.num_heads = num_heads
+ else:
+ assert (
+ channels % num_head_channels == 0
+ ), f"q,k,v channels {channels} is not divisible by num_head_channels {num_head_channels}"
+ self.num_heads = channels // num_head_channels
+ self.use_checkpoint = use_checkpoint
+ self.norm = normalization(channels)
+ self.qkv = conv_nd(1, channels, channels * 3, 1)
+ if use_new_attention_order:
+ # split qkv before split heads
+ self.attention = QKVAttention(self.num_heads)
+ else:
+ # split heads before split qkv
+ self.attention = QKVAttentionLegacy(self.num_heads)
+
+ self.proj_out = zero_module(conv_nd(1, channels, channels, 1))
+
+ def forward(self, x):
+ return checkpoint(self._forward, (x,), self.parameters(), True) # TODO: check checkpoint usage, is True # TODO: fix the .half call!!!
+ #return pt_checkpoint(self._forward, x) # pytorch
+
+ def _forward(self, x):
+ b, c, *spatial = x.shape
+ x = x.reshape(b, c, -1)
+ qkv = self.qkv(self.norm(x))
+ h = self.attention(qkv)
+ h = self.proj_out(h)
+ return (x + h).reshape(b, c, *spatial)
+
+
+def count_flops_attn(model, _x, y):
+ """
+ A counter for the `thop` package to count the operations in an
+ attention operation.
+ Meant to be used like:
+ macs, params = thop.profile(
+ model,
+ inputs=(inputs, timestamps),
+ custom_ops={QKVAttention: QKVAttention.count_flops},
+ )
+ """
+ b, c, *spatial = y[0].shape
+ num_spatial = int(np.prod(spatial))
+ # We perform two matmuls with the same number of ops.
+ # The first computes the weight matrix, the second computes
+ # the combination of the value vectors.
+ matmul_ops = 2 * b * (num_spatial ** 2) * c
+ model.total_ops += th.DoubleTensor([matmul_ops])
+
+
+class QKVAttentionLegacy(nn.Module):
+ """
+ A module which performs QKV attention. Matches legacy QKVAttention + input/ouput heads shaping
+ """
+
+ def __init__(self, n_heads):
+ super().__init__()
+ self.n_heads = n_heads
+
+ def forward(self, qkv):
+ """
+ Apply QKV attention.
+ :param qkv: an [N x (H * 3 * C) x T] tensor of Qs, Ks, and Vs.
+ :return: an [N x (H * C) x T] tensor after attention.
+ """
+ bs, width, length = qkv.shape
+ assert width % (3 * self.n_heads) == 0
+ ch = width // (3 * self.n_heads)
+ q, k, v = qkv.reshape(bs * self.n_heads, ch * 3, length).split(ch, dim=1)
+ scale = 1 / math.sqrt(math.sqrt(ch))
+ weight = th.einsum(
+ "bct,bcs->bts", q * scale, k * scale
+ ) # More stable with f16 than dividing afterwards
+ weight = th.softmax(weight.float(), dim=-1).type(weight.dtype)
+ a = th.einsum("bts,bcs->bct", weight, v)
+ return a.reshape(bs, -1, length)
+
+ @staticmethod
+ def count_flops(model, _x, y):
+ return count_flops_attn(model, _x, y)
+
+
+class QKVAttention(nn.Module):
+ """
+ A module which performs QKV attention and splits in a different order.
+ """
+
+ def __init__(self, n_heads):
+ super().__init__()
+ self.n_heads = n_heads
+
+ def forward(self, qkv):
+ """
+ Apply QKV attention.
+ :param qkv: an [N x (3 * H * C) x T] tensor of Qs, Ks, and Vs.
+ :return: an [N x (H * C) x T] tensor after attention.
+ """
+ bs, width, length = qkv.shape
+ assert width % (3 * self.n_heads) == 0
+ ch = width // (3 * self.n_heads)
+ q, k, v = qkv.chunk(3, dim=1)
+ scale = 1 / math.sqrt(math.sqrt(ch))
+ weight = th.einsum(
+ "bct,bcs->bts",
+ (q * scale).view(bs * self.n_heads, ch, length),
+ (k * scale).view(bs * self.n_heads, ch, length),
+ ) # More stable with f16 than dividing afterwards
+ weight = th.softmax(weight.float(), dim=-1).type(weight.dtype)
+ a = th.einsum("bts,bcs->bct", weight, v.reshape(bs * self.n_heads, ch, length))
+ return a.reshape(bs, -1, length)
+
+ @staticmethod
+ def count_flops(model, _x, y):
+ return count_flops_attn(model, _x, y)
+
+
+class UNetModel(nn.Module):
+ """
+ The full UNet model with attention and timestep embedding.
+ :param in_channels: channels in the input Tensor.
+ :param model_channels: base channel count for the model.
+ :param out_channels: channels in the output Tensor.
+ :param num_res_blocks: number of residual blocks per downsample.
+ :param attention_resolutions: a collection of downsample rates at which
+ attention will take place. May be a set, list, or tuple.
+ For example, if this contains 4, then at 4x downsampling, attention
+ will be used.
+ :param dropout: the dropout probability.
+ :param channel_mult: channel multiplier for each level of the UNet.
+ :param conv_resample: if True, use learned convolutions for upsampling and
+ downsampling.
+ :param dims: determines if the signal is 1D, 2D, or 3D.
+ :param num_classes: if specified (as an int), then this model will be
+ class-conditional with `num_classes` classes.
+ :param use_checkpoint: use gradient checkpointing to reduce memory usage.
+ :param num_heads: the number of attention heads in each attention layer.
+ :param num_heads_channels: if specified, ignore num_heads and instead use
+ a fixed channel width per attention head.
+ :param num_heads_upsample: works with num_heads to set a different number
+ of heads for upsampling. Deprecated.
+ :param use_scale_shift_norm: use a FiLM-like conditioning mechanism.
+ :param resblock_updown: use residual blocks for up/downsampling.
+ :param use_new_attention_order: use a different attention pattern for potentially
+ increased efficiency.
+ """
+
+ def __init__(
+ self,
+ image_size,
+ in_channels,
+ model_channels,
+ out_channels,
+ num_res_blocks,
+ attention_resolutions,
+ dropout=0,
+ channel_mult=(1, 2, 4, 8),
+ conv_resample=True,
+ dims=2,
+ num_classes=None,
+ use_checkpoint=False,
+ use_fp16=False,
+ num_heads=-1,
+ num_head_channels=-1,
+ num_heads_upsample=-1,
+ use_scale_shift_norm=False,
+ resblock_updown=False,
+ use_new_attention_order=False,
+ use_spatial_transformer=False, # custom transformer support
+ transformer_depth=1, # custom transformer support
+ context_dim=None, # custom transformer support
+ n_embed=None, # custom support for prediction of discrete ids into codebook of first stage vq model
+ legacy=True,
+ disable_self_attentions=None,
+ num_attention_blocks=None,
+ disable_middle_self_attn=False,
+ use_linear_in_transformer=False,
+ ):
+ super().__init__()
+ if use_spatial_transformer:
+ assert context_dim is not None, 'Fool!! You forgot to include the dimension of your cross-attention conditioning...'
+
+ if context_dim is not None:
+ assert use_spatial_transformer, 'Fool!! You forgot to use the spatial transformer for your cross-attention conditioning...'
+ from omegaconf.listconfig import ListConfig
+ if type(context_dim) == ListConfig:
+ context_dim = list(context_dim)
+
+ if num_heads_upsample == -1:
+ num_heads_upsample = num_heads
+
+ if num_heads == -1:
+ assert num_head_channels != -1, 'Either num_heads or num_head_channels has to be set'
+
+ if num_head_channels == -1:
+ assert num_heads != -1, 'Either num_heads or num_head_channels has to be set'
+
+ self.image_size = image_size
+ self.in_channels = in_channels
+ self.model_channels = model_channels
+ self.out_channels = out_channels
+ if isinstance(num_res_blocks, int):
+ self.num_res_blocks = len(channel_mult) * [num_res_blocks]
+ else:
+ if len(num_res_blocks) != len(channel_mult):
+ raise ValueError("provide num_res_blocks either as an int (globally constant) or "
+ "as a list/tuple (per-level) with the same length as channel_mult")
+ self.num_res_blocks = num_res_blocks
+ if disable_self_attentions is not None:
+ # should be a list of booleans, indicating whether to disable self-attention in TransformerBlocks or not
+ assert len(disable_self_attentions) == len(channel_mult)
+ if num_attention_blocks is not None:
+ assert len(num_attention_blocks) == len(self.num_res_blocks)
+ assert all(map(lambda i: self.num_res_blocks[i] >= num_attention_blocks[i], range(len(num_attention_blocks))))
+ print(f"Constructor of UNetModel received num_attention_blocks={num_attention_blocks}. "
+ f"This option has LESS priority than attention_resolutions {attention_resolutions}, "
+ f"i.e., in cases where num_attention_blocks[i] > 0 but 2**i not in attention_resolutions, "
+ f"attention will still not be set.")
+
+ self.attention_resolutions = attention_resolutions
+ self.dropout = dropout
+ self.channel_mult = channel_mult
+ self.conv_resample = conv_resample
+ self.num_classes = num_classes
+ self.use_checkpoint = use_checkpoint
+ self.dtype = th.float16 if use_fp16 else th.float32
+ self.num_heads = num_heads
+ self.num_head_channels = num_head_channels
+ self.num_heads_upsample = num_heads_upsample
+ self.predict_codebook_ids = n_embed is not None
+
+ time_embed_dim = model_channels * 4
+ self.time_embed = nn.Sequential(
+ linear(model_channels, time_embed_dim),
+ nn.SiLU(),
+ linear(time_embed_dim, time_embed_dim),
+ )
+
+ if self.num_classes is not None:
+ if isinstance(self.num_classes, int):
+ self.label_emb = nn.Embedding(num_classes, time_embed_dim)
+ elif self.num_classes == "continuous":
+ print("setting up linear c_adm embedding layer")
+ self.label_emb = nn.Linear(1, time_embed_dim)
+ else:
+ raise ValueError()
+
+ self.input_blocks = nn.ModuleList(
+ [
+ TimestepEmbedSequential(
+ conv_nd(dims, in_channels, model_channels, 3, padding=1)
+ )
+ ]
+ )
+ self._feature_size = model_channels
+ input_block_chans = [model_channels]
+ ch = model_channels
+ ds = 1
+ for level, mult in enumerate(channel_mult):
+ for nr in range(self.num_res_blocks[level]):
+ layers = [
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ out_channels=mult * model_channels,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ )
+ ]
+ ch = mult * model_channels
+ if ds in attention_resolutions:
+ if num_head_channels == -1:
+ dim_head = ch // num_heads
+ else:
+ num_heads = ch // num_head_channels
+ dim_head = num_head_channels
+ if legacy:
+ #num_heads = 1
+ dim_head = ch // num_heads if use_spatial_transformer else num_head_channels
+ if exists(disable_self_attentions):
+ disabled_sa = disable_self_attentions[level]
+ else:
+ disabled_sa = False
+
+ if not exists(num_attention_blocks) or nr < num_attention_blocks[level]:
+ layers.append(
+ AttentionBlock(
+ ch,
+ use_checkpoint=use_checkpoint,
+ num_heads=num_heads,
+ num_head_channels=dim_head,
+ use_new_attention_order=use_new_attention_order,
+ ) if not use_spatial_transformer else SpatialTransformer(
+ ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim,
+ disable_self_attn=disabled_sa, use_linear=use_linear_in_transformer,
+ use_checkpoint=use_checkpoint
+ )
+ )
+ self.input_blocks.append(TimestepEmbedSequential(*layers))
+ self._feature_size += ch
+ input_block_chans.append(ch)
+ if level != len(channel_mult) - 1:
+ out_ch = ch
+ self.input_blocks.append(
+ TimestepEmbedSequential(
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ out_channels=out_ch,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ down=True,
+ )
+ if resblock_updown
+ else Downsample(
+ ch, conv_resample, dims=dims, out_channels=out_ch
+ )
+ )
+ )
+ ch = out_ch
+ input_block_chans.append(ch)
+ ds *= 2
+ self._feature_size += ch
+
+ if num_head_channels == -1:
+ dim_head = ch // num_heads
+ else:
+ num_heads = ch // num_head_channels
+ dim_head = num_head_channels
+ if legacy:
+ #num_heads = 1
+ dim_head = ch // num_heads if use_spatial_transformer else num_head_channels
+ self.middle_block = TimestepEmbedSequential(
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ ),
+ AttentionBlock(
+ ch,
+ use_checkpoint=use_checkpoint,
+ num_heads=num_heads,
+ num_head_channels=dim_head,
+ use_new_attention_order=use_new_attention_order,
+ ) if not use_spatial_transformer else SpatialTransformer( # always uses a self-attn
+ ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim,
+ disable_self_attn=disable_middle_self_attn, use_linear=use_linear_in_transformer,
+ use_checkpoint=use_checkpoint
+ ),
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ ),
+ )
+ self._feature_size += ch
+
+ self.output_blocks = nn.ModuleList([])
+ for level, mult in list(enumerate(channel_mult))[::-1]:
+ for i in range(self.num_res_blocks[level] + 1):
+ ich = input_block_chans.pop()
+ layers = [
+ ResBlock(
+ ch + ich,
+ time_embed_dim,
+ dropout,
+ out_channels=model_channels * mult,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ )
+ ]
+ ch = model_channels * mult
+ if ds in attention_resolutions:
+ if num_head_channels == -1:
+ dim_head = ch // num_heads
+ else:
+ num_heads = ch // num_head_channels
+ dim_head = num_head_channels
+ if legacy:
+ #num_heads = 1
+ dim_head = ch // num_heads if use_spatial_transformer else num_head_channels
+ if exists(disable_self_attentions):
+ disabled_sa = disable_self_attentions[level]
+ else:
+ disabled_sa = False
+
+ if not exists(num_attention_blocks) or i < num_attention_blocks[level]:
+ layers.append(
+ AttentionBlock(
+ ch,
+ use_checkpoint=use_checkpoint,
+ num_heads=num_heads_upsample,
+ num_head_channels=dim_head,
+ use_new_attention_order=use_new_attention_order,
+ ) if not use_spatial_transformer else SpatialTransformer(
+ ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim,
+ disable_self_attn=disabled_sa, use_linear=use_linear_in_transformer,
+ use_checkpoint=use_checkpoint
+ )
+ )
+ if level and i == self.num_res_blocks[level]:
+ out_ch = ch
+ layers.append(
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ out_channels=out_ch,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ up=True,
+ )
+ if resblock_updown
+ else Upsample(ch, conv_resample, dims=dims, out_channels=out_ch)
+ )
+ ds //= 2
+ self.output_blocks.append(TimestepEmbedSequential(*layers))
+ self._feature_size += ch
+
+ self.out = nn.Sequential(
+ normalization(ch),
+ nn.SiLU(),
+ zero_module(conv_nd(dims, model_channels, out_channels, 3, padding=1)),
+ )
+ if self.predict_codebook_ids:
+ self.id_predictor = nn.Sequential(
+ normalization(ch),
+ conv_nd(dims, model_channels, n_embed, 1),
+ #nn.LogSoftmax(dim=1) # change to cross_entropy and produce non-normalized logits
+ )
+
+ def convert_to_fp16(self):
+ """
+ Convert the torso of the model to float16.
+ """
+ self.input_blocks.apply(convert_module_to_f16)
+ self.middle_block.apply(convert_module_to_f16)
+ self.output_blocks.apply(convert_module_to_f16)
+
+ def convert_to_fp32(self):
+ """
+ Convert the torso of the model to float32.
+ """
+ self.input_blocks.apply(convert_module_to_f32)
+ self.middle_block.apply(convert_module_to_f32)
+ self.output_blocks.apply(convert_module_to_f32)
+
+ def forward(self, x, timesteps=None, context=None, y=None,**kwargs):
+ """
+ Apply the model to an input batch.
+ :param x: an [N x C x ...] Tensor of inputs.
+ :param timesteps: a 1-D batch of timesteps.
+ :param context: conditioning plugged in via crossattn
+ :param y: an [N] Tensor of labels, if class-conditional.
+ :return: an [N x C x ...] Tensor of outputs.
+ """
+ # breakpoint()
+ assert (y is not None) == (
+ self.num_classes is not None
+ ), "must specify y if and only if the model is class-conditional"
+ hs = []
+ t_emb = timestep_embedding(timesteps, self.model_channels, repeat_only=False)
+ emb = self.time_embed(t_emb)
+
+ if self.num_classes is not None:
+ assert y.shape[0] == x.shape[0]
+ emb = emb + self.label_emb(y)
+
+ h = x.type(self.dtype)
+ # breakpoint()
+ for module in self.input_blocks:
+ h = module(h, emb, context)
+ hs.append(h)
+ h = self.middle_block(h, emb, context)
+ for module in self.output_blocks:
+ h = th.cat([h, hs.pop()], dim=1)
+ h = module(h, emb, context)
+ h = h.type(x.dtype)
+ if self.predict_codebook_ids:
+ return self.id_predictor(h)
+ else:
+ return self.out(h)
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel_pseudo3D.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel_pseudo3D.py
new file mode 100644
index 0000000000000000000000000000000000000000..8035f9e5cd3197e7f79a23fb484300605e0d118b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/openaimodel_pseudo3D.py
@@ -0,0 +1,818 @@
+from abc import abstractmethod
+from functools import partial
+import math
+from typing import Iterable
+
+from einops import rearrange
+import numpy as np
+import torch as th
+import torch.nn as nn
+import torch.nn.functional as F
+
+from ldm.modules.diffusionmodules.util import (
+ checkpoint,
+ conv_nd,
+ linear,
+ avg_pool_nd,
+ zero_module,
+ normalization,
+ timestep_embedding,
+)
+from ldm.modules.attention import SpatialTransformer
+
+
+def exists(val):
+ return val is not None
+
+def default(val, d):
+ return val if exists(val) else d
+
+# dummy replace
+def convert_module_to_f16(x):
+ pass
+
+def convert_module_to_f32(x):
+ pass
+
+class PseudoConv3d(nn.Module):
+ def __init__(
+ self,
+ dim,
+ dim_out = None,
+ kernel_size = 3,
+ *,
+ temporal_kernel_size = None,
+ **kwargs
+ ):
+ super().__init__()
+ dim_out = default(dim_out, dim)
+ temporal_kernel_size = default(temporal_kernel_size, kernel_size)
+
+ self.temporal_conv = nn.Conv1d(dim_out, dim_out, kernel_size = temporal_kernel_size, padding = temporal_kernel_size // 2) if kernel_size > 1 else None
+
+ if exists(self.temporal_conv):
+ nn.init.dirac_(self.temporal_conv.weight.data) # initialized to be identity
+ nn.init.zeros_(self.temporal_conv.bias.data)
+
+ def forward(
+ self,
+ x,
+ enable_time = True
+ ):
+ _, _, h, w = x.shape
+
+ if not enable_time or not exists(self.temporal_conv):
+ return x
+
+ x = rearrange(x, '(b f) c h w -> (b h w) c f', f = 17)
+ x = self.temporal_conv(x)
+ x = rearrange(x, '(b h w) c f -> (b f) c h w', h = h, w = w)
+
+ return x
+
+
+## go
+class AttentionPool2d(nn.Module):
+ """
+ Adapted from CLIP: https://github.com/openai/CLIP/blob/main/clip/model.py
+ """
+
+ def __init__(
+ self,
+ spacial_dim: int,
+ embed_dim: int,
+ num_heads_channels: int,
+ output_dim: int = None,
+ ):
+ super().__init__()
+ self.positional_embedding = nn.Parameter(th.randn(embed_dim, spacial_dim ** 2 + 1) / embed_dim ** 0.5)
+ self.qkv_proj = conv_nd(1, embed_dim, 3 * embed_dim, 1)
+ self.c_proj = conv_nd(1, embed_dim, output_dim or embed_dim, 1)
+ self.num_heads = embed_dim // num_heads_channels
+ self.attention = QKVAttention(self.num_heads)
+
+ def forward(self, x):
+ b, c, *_spatial = x.shape
+ x = x.reshape(b, c, -1) # NC(HW)
+ x = th.cat([x.mean(dim=-1, keepdim=True), x], dim=-1) # NC(HW+1)
+ x = x + self.positional_embedding[None, :, :].to(x.dtype) # NC(HW+1)
+ x = self.qkv_proj(x)
+ x = self.attention(x)
+ x = self.c_proj(x)
+ return x[:, :, 0]
+
+
+class TimestepBlock(nn.Module):
+ """
+ Any module where forward() takes timestep embeddings as a second argument.
+ """
+
+ @abstractmethod
+ def forward(self, x, emb):
+ """
+ Apply the module to `x` given `emb` timestep embeddings.
+ """
+
+
+class TimestepEmbedSequential(nn.Sequential, TimestepBlock):
+ """
+ A sequential module that passes timestep embeddings to the children that
+ support it as an extra input.
+ """
+
+ def forward(self, x, emb, context=None):
+ for layer in self:
+ if isinstance(layer, TimestepBlock):
+ x = layer(x, emb)
+ elif isinstance(layer, SpatialTransformer):
+ x = layer(x, context)
+ else:
+ x = layer(x)
+ return x
+
+
+class Upsample(nn.Module):
+ """
+ An upsampling layer with an optional convolution.
+ :param channels: channels in the inputs and outputs.
+ :param use_conv: a bool determining if a convolution is applied.
+ :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then
+ upsampling occurs in the inner-two dimensions.
+ """
+
+ def __init__(self, channels, use_conv, dims=2, out_channels=None, padding=1):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.dims = dims
+ if use_conv:
+ self.conv = conv_nd(dims, self.channels, self.out_channels, 3, padding=padding)
+ self.conv_tem = PseudoConv3d(self.out_channels, self.out_channels, 3)
+
+ def forward(self, x):
+ assert x.shape[1] == self.channels
+ if self.dims == 3:
+ x = F.interpolate(
+ x, (x.shape[2], x.shape[3] * 2, x.shape[4] * 2), mode="nearest"
+ )
+ else:
+ x = F.interpolate(x, scale_factor=2, mode="nearest")
+ if self.use_conv:
+ x = self.conv(x)
+ x = self.conv_tem(x)
+ return x
+
+class TransposedUpsample(nn.Module):
+ 'Learned 2x upsampling without padding'
+ def __init__(self, channels, out_channels=None, ks=5):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+
+ self.up = nn.ConvTranspose2d(self.channels,self.out_channels,kernel_size=ks,stride=2)
+
+ def forward(self,x):
+ return self.up(x)
+
+
+class Downsample(nn.Module):
+ """
+ A downsampling layer with an optional convolution.
+ :param channels: channels in the inputs and outputs.
+ :param use_conv: a bool determining if a convolution is applied.
+ :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then
+ downsampling occurs in the inner-two dimensions.
+ """
+
+ def __init__(self, channels, use_conv, dims=2, out_channels=None,padding=1):
+ super().__init__()
+ self.channels = channels
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.dims = dims
+ stride = 2 if dims != 3 else (1, 2, 2)
+ if use_conv:
+ self.op = conv_nd(
+ dims, self.channels, self.out_channels, 3, stride=stride, padding=padding
+ )
+ self.op_tem = PseudoConv3d(self.out_channels, self.out_channels, 3)
+ else:
+ assert self.channels == self.out_channels
+ self.op = avg_pool_nd(dims, kernel_size=stride, stride=stride)
+
+ def forward(self, x):
+ assert x.shape[1] == self.channels
+ if self.use_conv:
+ x = self.op(x)
+ x = self.op_tem(x)
+ else:
+ x = self.op(x)
+ return x
+
+
+class ResBlock(TimestepBlock):
+ """
+ A residual block that can optionally change the number of channels.
+ :param channels: the number of input channels.
+ :param emb_channels: the number of timestep embedding channels.
+ :param dropout: the rate of dropout.
+ :param out_channels: if specified, the number of out channels.
+ :param use_conv: if True and out_channels is specified, use a spatial
+ convolution instead of a smaller 1x1 convolution to change the
+ channels in the skip connection.
+ :param dims: determines if the signal is 1D, 2D, or 3D.
+ :param use_checkpoint: if True, use gradient checkpointing on this module.
+ :param up: if True, use this block for upsampling.
+ :param down: if True, use this block for downsampling.
+ """
+
+ def __init__(
+ self,
+ channels,
+ emb_channels,
+ dropout,
+ out_channels=None,
+ use_conv=False,
+ use_scale_shift_norm=False,
+ dims=2,
+ use_checkpoint=False,
+ up=False,
+ down=False,
+ ):
+ super().__init__()
+ self.channels = channels
+ self.emb_channels = emb_channels
+ self.dropout = dropout
+ self.out_channels = out_channels or channels
+ self.use_conv = use_conv
+ self.use_checkpoint = use_checkpoint
+ self.use_scale_shift_norm = use_scale_shift_norm
+
+ self.in_layers = nn.Sequential(
+ normalization(channels),
+ nn.SiLU(),
+ conv_nd(dims, channels, self.out_channels, 3, padding=1),
+ )
+ self.in_layers_tem = PseudoConv3d(channels, self.out_channels, 3)
+
+ self.updown = up or down
+
+ if up:
+ self.h_upd = Upsample(channels, False, dims)
+ self.x_upd = Upsample(channels, False, dims)
+ elif down:
+ self.h_upd = Downsample(channels, False, dims)
+ self.x_upd = Downsample(channels, False, dims)
+ else:
+ self.h_upd = self.x_upd = nn.Identity()
+
+ self.emb_layers = nn.Sequential(
+ nn.SiLU(),
+ linear(
+ emb_channels,
+ 2 * self.out_channels if use_scale_shift_norm else self.out_channels,
+ ),
+ )
+ self.out_layers = nn.Sequential(
+ normalization(self.out_channels),
+ nn.SiLU(),
+ nn.Dropout(p=dropout),
+ zero_module(
+ conv_nd(dims, self.out_channels, self.out_channels, 3, padding=1)
+ ),
+ )
+ self.out_layers_tem = PseudoConv3d(self.out_channels, self.out_channels, 3)
+
+ if self.out_channels == channels:
+ self.skip_connection = nn.Identity()
+ elif use_conv:
+ self.skip_connection = conv_nd(
+ dims, channels, self.out_channels, 3, padding=1
+ )
+ else:
+ self.skip_connection = conv_nd(dims, channels, self.out_channels, 1)
+
+ def forward(self, x, emb):
+ """
+ Apply the block to a Tensor, conditioned on a timestep embedding.
+ :param x: an [N x C x ...] Tensor of features.
+ :param emb: an [N x emb_channels] Tensor of timestep embeddings.
+ :return: an [N x C x ...] Tensor of outputs.
+ """
+ return checkpoint(
+ self._forward, (x, emb), self.parameters(), self.use_checkpoint
+ )
+
+
+ def _forward(self, x, emb):
+ if self.updown:
+ in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1]
+ h = in_rest(x)
+ h = self.h_upd(h)
+ x = self.x_upd(x)
+ h = in_conv(h)
+ h = self.in_layers_tem(h)
+ else:
+ h = self.in_layers(x)
+ h = self.in_layers_tem(h)
+ emb_out = self.emb_layers(emb).type(h.dtype)
+ while len(emb_out.shape) < len(h.shape):
+ emb_out = emb_out[..., None]
+ if self.use_scale_shift_norm:
+ out_norm, out_rest = self.out_layers[0], self.out_layers[1:]
+ scale, shift = th.chunk(emb_out, 2, dim=1)
+ h = out_norm(h) * (1 + scale) + shift
+ h = out_rest(h)
+ h = self.out_layers_tem(h)
+ else:
+ h = h + emb_out
+ h = self.out_layers(h)
+ h = self.out_layers_tem(h)
+ return self.skip_connection(x) + h
+
+
+class AttentionBlock(nn.Module):
+ """
+ An attention block that allows spatial positions to attend to each other.
+ Originally ported from here, but adapted to the N-d case.
+ https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/models/unet.py#L66.
+ """
+
+ def __init__(
+ self,
+ channels,
+ num_heads=1,
+ num_head_channels=-1,
+ use_checkpoint=False,
+ use_new_attention_order=False,
+ ):
+ super().__init__()
+ self.channels = channels
+ if num_head_channels == -1:
+ self.num_heads = num_heads
+ else:
+ assert (
+ channels % num_head_channels == 0
+ ), f"q,k,v channels {channels} is not divisible by num_head_channels {num_head_channels}"
+ self.num_heads = channels // num_head_channels
+ self.use_checkpoint = use_checkpoint
+ self.norm = normalization(channels)
+ self.qkv = conv_nd(1, channels, channels * 3, 1)
+ self.qkv_tem = conv_nd(1, channels, channels * 3, 1)
+
+ if use_new_attention_order:
+ # split qkv before split heads
+ self.attention = QKVAttention(self.num_heads)
+ self.attention_tem = QKVAttention(self.num_heads)
+ else:
+ # split heads before split qkv
+ self.attention = QKVAttentionLegacy(self.num_heads)
+ self.attention_tem = QKVAttentionLegacy(self.num_heads)
+
+ self.proj_out = zero_module(conv_nd(1, channels, channels, 1))
+ self.proj_out_tem = zero_module(conv_nd(1, channels, channels, 1))
+
+ def forward(self, x):
+ return checkpoint(self._forward, (x,), self.parameters(), True) # TODO: check checkpoint usage, is True # TODO: fix the .half call!!!
+ #return pt_checkpoint(self._forward, x) # pytorch
+
+ def _forward(self, x):
+ b, c, *spatial = x.shape
+ x = x.reshape(b, c, -1)
+ qkv = self.qkv(self.norm(x))
+ h = self.attention(qkv)
+ h = self.proj_out(h)
+
+ x = (x + h).reshape(b, c, *spatial)
+ x = rearrange(x, '(b f) c h w -> (b h w) c f', f = 16)
+
+ qkv_tem = self.qkv_tem(self.norm(x))
+ h_tem = self.attention_tem(qkv_tem)
+ h_tem = self.proj_out_tem(h_tem)
+
+ x = x+h_tem
+ x = rearrange(x, '(b h w) c f -> (b f) c h w', w = spatial[0], h = spatial[1])
+ return x
+
+
+def count_flops_attn(model, _x, y):
+ """
+ A counter for the `thop` package to count the operations in an
+ attention operation.
+ Meant to be used like:
+ macs, params = thop.profile(
+ model,
+ inputs=(inputs, timestamps),
+ custom_ops={QKVAttention: QKVAttention.count_flops},
+ )
+ """
+ b, c, *spatial = y[0].shape
+ num_spatial = int(np.prod(spatial))
+ # We perform two matmuls with the same number of ops.
+ # The first computes the weight matrix, the second computes
+ # the combination of the value vectors.
+ matmul_ops = 2 * b * (num_spatial ** 2) * c
+ model.total_ops += th.DoubleTensor([matmul_ops])
+
+
+class QKVAttentionLegacy(nn.Module):
+ """
+ A module which performs QKV attention. Matches legacy QKVAttention + input/ouput heads shaping
+ """
+
+ def __init__(self, n_heads):
+ super().__init__()
+ self.n_heads = n_heads
+
+ def forward(self, qkv):
+ """
+ Apply QKV attention.
+ :param qkv: an [N x (H * 3 * C) x T] tensor of Qs, Ks, and Vs.
+ :return: an [N x (H * C) x T] tensor after attention.
+ """
+ bs, width, length = qkv.shape
+ assert width % (3 * self.n_heads) == 0
+ ch = width // (3 * self.n_heads)
+ q, k, v = qkv.reshape(bs * self.n_heads, ch * 3, length).split(ch, dim=1)
+ scale = 1 / math.sqrt(math.sqrt(ch))
+ weight = th.einsum(
+ "bct,bcs->bts", q * scale, k * scale
+ ) # More stable with f16 than dividing afterwards
+ weight = th.softmax(weight.float(), dim=-1).type(weight.dtype)
+ a = th.einsum("bts,bcs->bct", weight, v)
+ return a.reshape(bs, -1, length)
+
+ @staticmethod
+ def count_flops(model, _x, y):
+ return count_flops_attn(model, _x, y)
+
+
+class QKVAttention(nn.Module):
+ """
+ A module which performs QKV attention and splits in a different order.
+ """
+
+ def __init__(self, n_heads):
+ super().__init__()
+ self.n_heads = n_heads
+
+ def forward(self, qkv):
+ """
+ Apply QKV attention.
+ :param qkv: an [N x (3 * H * C) x T] tensor of Qs, Ks, and Vs.
+ :return: an [N x (H * C) x T] tensor after attention.
+ """
+ bs, width, length = qkv.shape
+ assert width % (3 * self.n_heads) == 0
+ ch = width // (3 * self.n_heads)
+ q, k, v = qkv.chunk(3, dim=1)
+ scale = 1 / math.sqrt(math.sqrt(ch))
+ weight = th.einsum(
+ "bct,bcs->bts",
+ (q * scale).view(bs * self.n_heads, ch, length),
+ (k * scale).view(bs * self.n_heads, ch, length),
+ ) # More stable with f16 than dividing afterwards
+ weight = th.softmax(weight.float(), dim=-1).type(weight.dtype)
+ a = th.einsum("bts,bcs->bct", weight, v.reshape(bs * self.n_heads, ch, length))
+ return a.reshape(bs, -1, length)
+
+ @staticmethod
+ def count_flops(model, _x, y):
+ return count_flops_attn(model, _x, y)
+
+
+class UNetModel(nn.Module):
+ """
+ The full UNet model with attention and timestep embedding.
+ :param in_channels: channels in the input Tensor.
+ :param model_channels: base channel count for the model.
+ :param out_channels: channels in the output Tensor.
+ :param num_res_blocks: number of residual blocks per downsample.
+ :param attention_resolutions: a collection of downsample rates at which
+ attention will take place. May be a set, list, or tuple.
+ For example, if this contains 4, then at 4x downsampling, attention
+ will be used.
+ :param dropout: the dropout probability.
+ :param channel_mult: channel multiplier for each level of the UNet.
+ :param conv_resample: if True, use learned convolutions for upsampling and
+ downsampling.
+ :param dims: determines if the signal is 1D, 2D, or 3D.
+ :param num_classes: if specified (as an int), then this model will be
+ class-conditional with `num_classes` classes.
+ :param use_checkpoint: use gradient checkpointing to reduce memory usage.
+ :param num_heads: the number of attention heads in each attention layer.
+ :param num_heads_channels: if specified, ignore num_heads and instead use
+ a fixed channel width per attention head.
+ :param num_heads_upsample: works with num_heads to set a different number
+ of heads for upsampling. Deprecated.
+ :param use_scale_shift_norm: use a FiLM-like conditioning mechanism.
+ :param resblock_updown: use residual blocks for up/downsampling.
+ :param use_new_attention_order: use a different attention pattern for potentially
+ increased efficiency.
+ """
+
+ def __init__(
+ self,
+ image_size,
+ in_channels,
+ model_channels,
+ out_channels,
+ num_res_blocks,
+ attention_resolutions,
+ dropout=0,
+ channel_mult=(1, 2, 4, 8),
+ conv_resample=True,
+ dims=2,
+ num_classes=None,
+ use_checkpoint=False,
+ use_fp16=False,
+ num_heads=-1,
+ num_head_channels=-1,
+ num_heads_upsample=-1,
+ use_scale_shift_norm=False,
+ resblock_updown=False,
+ use_new_attention_order=False,
+ use_spatial_transformer=False, # custom transformer support
+ transformer_depth=1, # custom transformer support
+ context_dim=None, # custom transformer support
+ n_embed=None, # custom support for prediction of discrete ids into codebook of first stage vq model
+ legacy=True,
+ ):
+ super().__init__()
+ if use_spatial_transformer:
+ assert context_dim is not None, 'Fool!! You forgot to include the dimension of your cross-attention conditioning...'
+
+ if context_dim is not None:
+ assert use_spatial_transformer, 'Fool!! You forgot to use the spatial transformer for your cross-attention conditioning...'
+ from omegaconf.listconfig import ListConfig
+ if type(context_dim) == ListConfig:
+ context_dim = list(context_dim)
+
+ if num_heads_upsample == -1:
+ num_heads_upsample = num_heads
+
+ if num_heads == -1:
+ assert num_head_channels != -1, 'Either num_heads or num_head_channels has to be set'
+
+ if num_head_channels == -1:
+ assert num_heads != -1, 'Either num_heads or num_head_channels has to be set'
+
+ self.image_size = image_size
+ self.in_channels = in_channels
+ self.model_channels = model_channels
+ self.out_channels = out_channels
+ self.num_res_blocks = num_res_blocks
+ self.attention_resolutions = attention_resolutions
+ self.dropout = dropout
+ self.channel_mult = channel_mult
+ self.conv_resample = conv_resample
+ self.num_classes = num_classes
+ self.use_checkpoint = use_checkpoint
+ self.dtype = th.float16 if use_fp16 else th.float32
+ self.num_heads = num_heads
+ self.num_head_channels = num_head_channels
+ self.num_heads_upsample = num_heads_upsample
+ self.predict_codebook_ids = n_embed is not None
+
+ time_embed_dim = model_channels * 4
+ self.time_embed = nn.Sequential(
+ linear(model_channels, time_embed_dim),
+ nn.SiLU(),
+ linear(time_embed_dim, time_embed_dim),
+ )
+
+ if self.num_classes is not None:
+ self.label_emb = nn.Embedding(num_classes, time_embed_dim)
+
+ self.input_blocks = nn.ModuleList(
+ [
+ TimestepEmbedSequential(
+ conv_nd(dims, in_channels, model_channels, 3, padding=1),
+ PseudoConv3d(model_channels, model_channels, 3)
+ )
+ ]
+ )
+
+ self._feature_size = model_channels
+ input_block_chans = [model_channels]
+ ch = model_channels
+ ds = 1
+ for level, mult in enumerate(channel_mult):
+ for _ in range(num_res_blocks):
+ layers = [
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ out_channels=mult * model_channels,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ )
+ ]
+ ch = mult * model_channels
+ if ds in attention_resolutions:
+ if num_head_channels == -1:
+ dim_head = ch // num_heads
+ else:
+ num_heads = ch // num_head_channels
+ dim_head = num_head_channels
+ if legacy:
+ #num_heads = 1
+ dim_head = ch // num_heads if use_spatial_transformer else num_head_channels
+ layers.append(
+ AttentionBlock(
+ ch,
+ use_checkpoint=use_checkpoint,
+ num_heads=num_heads,
+ num_head_channels=dim_head,
+ use_new_attention_order=use_new_attention_order,
+ ) if not use_spatial_transformer else SpatialTransformer(
+ ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, use_checkpoint=use_checkpoint
+ )
+ )
+ self.input_blocks.append(TimestepEmbedSequential(*layers))
+ self._feature_size += ch
+ input_block_chans.append(ch)
+ if level != len(channel_mult) - 1:
+ out_ch = ch
+ self.input_blocks.append(
+ TimestepEmbedSequential(
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ out_channels=out_ch,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ down=True,
+ )
+ if resblock_updown
+ else Downsample(
+ ch, conv_resample, dims=dims, out_channels=out_ch
+ )
+ )
+ )
+ ch = out_ch
+ input_block_chans.append(ch)
+ ds *= 2
+ self._feature_size += ch
+
+ if num_head_channels == -1:
+ dim_head = ch // num_heads
+ else:
+ num_heads = ch // num_head_channels
+ dim_head = num_head_channels
+ if legacy:
+ #num_heads = 1
+ dim_head = ch // num_heads if use_spatial_transformer else num_head_channels
+ self.middle_block = TimestepEmbedSequential(
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ ),
+ AttentionBlock(
+ ch,
+ use_checkpoint=use_checkpoint,
+ num_heads=num_heads,
+ num_head_channels=dim_head,
+ use_new_attention_order=use_new_attention_order,
+ ) if not use_spatial_transformer else SpatialTransformer(
+ ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, use_checkpoint=use_checkpoint
+ ),
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ ),
+ )
+ self._feature_size += ch
+
+ self.output_blocks = nn.ModuleList([])
+ for level, mult in list(enumerate(channel_mult))[::-1]:
+ for i in range(num_res_blocks + 1):
+ ich = input_block_chans.pop()
+ layers = [
+ ResBlock(
+ ch + ich,
+ time_embed_dim,
+ dropout,
+ out_channels=model_channels * mult,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ )
+ ]
+ ch = model_channels * mult
+ if ds in attention_resolutions:
+ if num_head_channels == -1:
+ dim_head = ch // num_heads
+ else:
+ num_heads = ch // num_head_channels
+ dim_head = num_head_channels
+ if legacy:
+ #num_heads = 1
+ dim_head = ch // num_heads if use_spatial_transformer else num_head_channels
+ layers.append(
+ AttentionBlock(
+ ch,
+ use_checkpoint=use_checkpoint,
+ num_heads=num_heads_upsample,
+ num_head_channels=dim_head,
+ use_new_attention_order=use_new_attention_order,
+ ) if not use_spatial_transformer else SpatialTransformer(
+ ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim, use_checkpoint=use_checkpoint
+ )
+ )
+ if level and i == num_res_blocks:
+ out_ch = ch
+ layers.append(
+ ResBlock(
+ ch,
+ time_embed_dim,
+ dropout,
+ out_channels=out_ch,
+ dims=dims,
+ use_checkpoint=use_checkpoint,
+ use_scale_shift_norm=use_scale_shift_norm,
+ up=True,
+ )
+ if resblock_updown
+ else Upsample(ch, conv_resample, dims=dims, out_channels=out_ch)
+ )
+ ds //= 2
+ self.output_blocks.append(TimestepEmbedSequential(*layers))
+ self._feature_size += ch
+
+ self.out = nn.Sequential(
+ normalization(ch),
+ nn.SiLU(),
+ zero_module(conv_nd(dims, model_channels, out_channels, 3, padding=1)),
+ )
+ self.out_tem = PseudoConv3d(out_channels, out_channels, 3)
+
+ if self.predict_codebook_ids:
+ self.id_predictor = nn.Sequential(
+ normalization(ch),
+ conv_nd(dims, model_channels, n_embed, 1),
+ #nn.LogSoftmax(dim=1) # change to cross_entropy and produce non-normalized logits
+ )
+
+ def convert_to_fp16(self):
+ """
+ Convert the torso of the model to float16.
+ """
+ self.input_blocks.apply(convert_module_to_f16)
+ self.middle_block.apply(convert_module_to_f16)
+ self.output_blocks.apply(convert_module_to_f16)
+
+ def convert_to_fp32(self):
+ """
+ Convert the torso of the model to float32.
+ """
+ self.input_blocks.apply(convert_module_to_f32)
+ self.middle_block.apply(convert_module_to_f32)
+ self.output_blocks.apply(convert_module_to_f32)
+
+ def forward(self, x, timesteps=None, context=None, y=None,**kwargs):
+ """
+ Apply the model to an input batch.
+ :param x: an [N x C x ...] Tensor of inputs.
+ :param timesteps: a 1-D batch of timesteps.
+ :param context: conditioning plugged in via crossattn
+ :param y: an [N] Tensor of labels, if class-conditional.
+ :return: an [N x C x ...] Tensor of outputs.
+ """
+ assert (y is not None) == (
+ self.num_classes is not None
+ ), "must specify y if and only if the model is class-conditional"
+ hs = []
+ t_emb = timestep_embedding(timesteps, self.model_channels, repeat_only=False)
+ emb = self.time_embed(t_emb)
+
+ if self.num_classes is not None:
+ assert y.shape == (x.shape[0],)
+ emb = emb + self.label_emb(y)
+
+ h = x.type(self.dtype)
+ for module in self.input_blocks:
+ h = module(h, emb, context)
+ hs.append(h)
+ h = self.middle_block(h, emb, context)
+ for module in self.output_blocks:
+ h = th.cat([h, hs.pop()], dim=1)
+ h = module(h, emb, context)
+ h = h.type(x.dtype)
+ if self.predict_codebook_ids:
+ return self.id_predictor(h)
+ else:
+ return self.out_tem(self.out(h))
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/upscaling.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/upscaling.py
new file mode 100644
index 0000000000000000000000000000000000000000..03816662098ce1ffac79bd939b892e867ab91988
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/upscaling.py
@@ -0,0 +1,81 @@
+import torch
+import torch.nn as nn
+import numpy as np
+from functools import partial
+
+from ldm.modules.diffusionmodules.util import extract_into_tensor, make_beta_schedule
+from ldm.util import default
+
+
+class AbstractLowScaleModel(nn.Module):
+ # for concatenating a downsampled image to the latent representation
+ def __init__(self, noise_schedule_config=None):
+ super(AbstractLowScaleModel, self).__init__()
+ if noise_schedule_config is not None:
+ self.register_schedule(**noise_schedule_config)
+
+ def register_schedule(self, beta_schedule="linear", timesteps=1000,
+ linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3):
+ betas = make_beta_schedule(beta_schedule, timesteps, linear_start=linear_start, linear_end=linear_end,
+ cosine_s=cosine_s)
+ alphas = 1. - betas
+ alphas_cumprod = np.cumprod(alphas, axis=0)
+ alphas_cumprod_prev = np.append(1., alphas_cumprod[:-1])
+
+ timesteps, = betas.shape
+ self.num_timesteps = int(timesteps)
+ self.linear_start = linear_start
+ self.linear_end = linear_end
+ assert alphas_cumprod.shape[0] == self.num_timesteps, 'alphas have to be defined for each timestep'
+
+ to_torch = partial(torch.tensor, dtype=torch.float32)
+
+ self.register_buffer('betas', to_torch(betas))
+ self.register_buffer('alphas_cumprod', to_torch(alphas_cumprod))
+ self.register_buffer('alphas_cumprod_prev', to_torch(alphas_cumprod_prev))
+
+ # calculations for diffusion q(x_t | x_{t-1}) and others
+ self.register_buffer('sqrt_alphas_cumprod', to_torch(np.sqrt(alphas_cumprod)))
+ self.register_buffer('sqrt_one_minus_alphas_cumprod', to_torch(np.sqrt(1. - alphas_cumprod)))
+ self.register_buffer('log_one_minus_alphas_cumprod', to_torch(np.log(1. - alphas_cumprod)))
+ self.register_buffer('sqrt_recip_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod)))
+ self.register_buffer('sqrt_recipm1_alphas_cumprod', to_torch(np.sqrt(1. / alphas_cumprod - 1)))
+
+ def q_sample(self, x_start, t, noise=None):
+ noise = default(noise, lambda: torch.randn_like(x_start))
+ return (extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start +
+ extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise)
+
+ def forward(self, x):
+ return x, None
+
+ def decode(self, x):
+ return x
+
+
+class SimpleImageConcat(AbstractLowScaleModel):
+ # no noise level conditioning
+ def __init__(self):
+ super(SimpleImageConcat, self).__init__(noise_schedule_config=None)
+ self.max_noise_level = 0
+
+ def forward(self, x):
+ # fix to constant noise level
+ return x, torch.zeros(x.shape[0], device=x.device).long()
+
+
+class ImageConcatWithNoiseAugmentation(AbstractLowScaleModel):
+ def __init__(self, noise_schedule_config, max_noise_level=1000, to_cuda=False):
+ super().__init__(noise_schedule_config=noise_schedule_config)
+ self.max_noise_level = max_noise_level
+
+ def forward(self, x, noise_level=None):
+ if noise_level is None:
+ noise_level = torch.randint(0, self.max_noise_level, (x.shape[0],), device=x.device).long()
+ else:
+ assert isinstance(noise_level, torch.Tensor)
+ z = self.q_sample(x, noise_level)
+ return z, noise_level
+
+
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/util.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..637363dfe34799e70cfdbcd11445212df9d9ca1f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/diffusionmodules/util.py
@@ -0,0 +1,270 @@
+# adopted from
+# https://github.com/openai/improved-diffusion/blob/main/improved_diffusion/gaussian_diffusion.py
+# and
+# https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py
+# and
+# https://github.com/openai/guided-diffusion/blob/0ba878e517b276c45d1195eb29f6f5f72659a05b/guided_diffusion/nn.py
+#
+# thanks!
+
+
+import os
+import math
+import torch
+import torch.nn as nn
+import numpy as np
+from einops import repeat
+
+from ldm.util import instantiate_from_config
+
+
+def make_beta_schedule(schedule, n_timestep, linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3):
+ if schedule == "linear":
+ betas = (
+ torch.linspace(linear_start ** 0.5, linear_end ** 0.5, n_timestep, dtype=torch.float64) ** 2
+ )
+
+ elif schedule == "cosine":
+ timesteps = (
+ torch.arange(n_timestep + 1, dtype=torch.float64) / n_timestep + cosine_s
+ )
+ alphas = timesteps / (1 + cosine_s) * np.pi / 2
+ alphas = torch.cos(alphas).pow(2)
+ alphas = alphas / alphas[0]
+ betas = 1 - alphas[1:] / alphas[:-1]
+ betas = np.clip(betas, a_min=0, a_max=0.999)
+
+ elif schedule == "sqrt_linear":
+ betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64)
+ elif schedule == "sqrt":
+ betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64) ** 0.5
+ else:
+ raise ValueError(f"schedule '{schedule}' unknown.")
+ return betas.numpy()
+
+
+def make_ddim_timesteps(ddim_discr_method, num_ddim_timesteps, num_ddpm_timesteps, verbose=True):
+ if ddim_discr_method == 'uniform':
+ c = num_ddpm_timesteps // num_ddim_timesteps
+ ddim_timesteps = np.asarray(list(range(0, num_ddpm_timesteps, c)))
+ elif ddim_discr_method == 'quad':
+ ddim_timesteps = ((np.linspace(0, np.sqrt(num_ddpm_timesteps * .8), num_ddim_timesteps)) ** 2).astype(int)
+ else:
+ raise NotImplementedError(f'There is no ddim discretization method called "{ddim_discr_method}"')
+
+ # assert ddim_timesteps.shape[0] == num_ddim_timesteps
+ # add one to get the final alpha values right (the ones from first scale to data during sampling)
+ steps_out = ddim_timesteps + 1
+ if verbose:
+ print(f'Selected timesteps for ddim sampler: {steps_out}')
+ return steps_out
+
+
+def make_ddim_sampling_parameters(alphacums, ddim_timesteps, eta, verbose=True):
+ # select alphas for computing the variance schedule
+ alphas = alphacums[ddim_timesteps]
+ alphas_prev = np.asarray([alphacums[0]] + alphacums[ddim_timesteps[:-1]].tolist())
+
+ # according the the formula provided in https://arxiv.org/abs/2010.02502
+ sigmas = eta * np.sqrt((1 - alphas_prev) / (1 - alphas) * (1 - alphas / alphas_prev))
+ if verbose:
+ print(f'Selected alphas for ddim sampler: a_t: {alphas}; a_(t-1): {alphas_prev}')
+ print(f'For the chosen value of eta, which is {eta}, '
+ f'this results in the following sigma_t schedule for ddim sampler {sigmas}')
+ return sigmas, alphas, alphas_prev
+
+
+def betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.999):
+ """
+ Create a beta schedule that discretizes the given alpha_t_bar function,
+ which defines the cumulative product of (1-beta) over time from t = [0,1].
+ :param num_diffusion_timesteps: the number of betas to produce.
+ :param alpha_bar: a lambda that takes an argument t from 0 to 1 and
+ produces the cumulative product of (1-beta) up to that
+ part of the diffusion process.
+ :param max_beta: the maximum beta to use; use values lower than 1 to
+ prevent singularities.
+ """
+ betas = []
+ for i in range(num_diffusion_timesteps):
+ t1 = i / num_diffusion_timesteps
+ t2 = (i + 1) / num_diffusion_timesteps
+ betas.append(min(1 - alpha_bar(t2) / alpha_bar(t1), max_beta))
+ return np.array(betas)
+
+
+def extract_into_tensor(a, t, x_shape):
+ b, *_ = t.shape
+ out = a.gather(-1, t)
+ return out.reshape(b, *((1,) * (len(x_shape) - 1)))
+
+
+def checkpoint(func, inputs, params, flag):
+ """
+ Evaluate a function without caching intermediate activations, allowing for
+ reduced memory at the expense of extra compute in the backward pass.
+ :param func: the function to evaluate.
+ :param inputs: the argument sequence to pass to `func`.
+ :param params: a sequence of parameters `func` depends on but does not
+ explicitly take as arguments.
+ :param flag: if False, disable gradient checkpointing.
+ """
+ if flag:
+ args = tuple(inputs) + tuple(params)
+ return CheckpointFunction.apply(func, len(inputs), *args)
+ else:
+ return func(*inputs)
+
+
+class CheckpointFunction(torch.autograd.Function):
+ @staticmethod
+ def forward(ctx, run_function, length, *args):
+ ctx.run_function = run_function
+ ctx.input_tensors = list(args[:length])
+ ctx.input_params = list(args[length:])
+ ctx.gpu_autocast_kwargs = {"enabled": torch.is_autocast_enabled(),
+ "dtype": torch.get_autocast_gpu_dtype(),
+ "cache_enabled": torch.is_autocast_cache_enabled()}
+ with torch.no_grad():
+ output_tensors = ctx.run_function(*ctx.input_tensors)
+ return output_tensors
+
+ @staticmethod
+ def backward(ctx, *output_grads):
+ ctx.input_tensors = [x.detach().requires_grad_(True) for x in ctx.input_tensors]
+ with torch.enable_grad(), \
+ torch.cuda.amp.autocast(**ctx.gpu_autocast_kwargs):
+ # Fixes a bug where the first op in run_function modifies the
+ # Tensor storage in place, which is not allowed for detach()'d
+ # Tensors.
+ shallow_copies = [x.view_as(x) for x in ctx.input_tensors]
+ output_tensors = ctx.run_function(*shallow_copies)
+ input_grads = torch.autograd.grad(
+ output_tensors,
+ ctx.input_tensors + ctx.input_params,
+ output_grads,
+ allow_unused=True,
+ )
+ del ctx.input_tensors
+ del ctx.input_params
+ del output_tensors
+ return (None, None) + input_grads
+
+
+def timestep_embedding(timesteps, dim, max_period=10000, repeat_only=False):
+ """
+ Create sinusoidal timestep embeddings.
+ :param timesteps: a 1-D Tensor of N indices, one per batch element.
+ These may be fractional.
+ :param dim: the dimension of the output.
+ :param max_period: controls the minimum frequency of the embeddings.
+ :return: an [N x dim] Tensor of positional embeddings.
+ """
+ if not repeat_only:
+ half = dim // 2
+ freqs = torch.exp(
+ -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half
+ ).to(device=timesteps.device)
+ args = timesteps[:, None].float() * freqs[None]
+ embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1)
+ if dim % 2:
+ embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1)
+ else:
+ embedding = repeat(timesteps, 'b -> b d', d=dim)
+ return embedding
+
+
+def zero_module(module):
+ """
+ Zero out the parameters of a module and return it.
+ """
+ for p in module.parameters():
+ p.detach().zero_()
+ return module
+
+
+def scale_module(module, scale):
+ """
+ Scale the parameters of a module and return it.
+ """
+ for p in module.parameters():
+ p.detach().mul_(scale)
+ return module
+
+
+def mean_flat(tensor):
+ """
+ Take the mean over all non-batch dimensions.
+ """
+ return tensor.mean(dim=list(range(1, len(tensor.shape))))
+
+
+def normalization(channels):
+ """
+ Make a standard normalization layer.
+ :param channels: number of input channels.
+ :return: an nn.Module for normalization.
+ """
+ return GroupNorm32(32, channels)
+
+
+# PyTorch 1.7 has SiLU, but we support PyTorch 1.5.
+class SiLU(nn.Module):
+ def forward(self, x):
+ return x * torch.sigmoid(x)
+
+
+class GroupNorm32(nn.GroupNorm):
+ def forward(self, x):
+ return super().forward(x.float()).type(x.dtype)
+
+def conv_nd(dims, *args, **kwargs):
+ """
+ Create a 1D, 2D, or 3D convolution module.
+ """
+ if dims == 1:
+ return nn.Conv1d(*args, **kwargs)
+ elif dims == 2:
+ return nn.Conv2d(*args, **kwargs)
+ elif dims == 3:
+ return nn.Conv3d(*args, **kwargs)
+ raise ValueError(f"unsupported dimensions: {dims}")
+
+
+def linear(*args, **kwargs):
+ """
+ Create a linear module.
+ """
+ return nn.Linear(*args, **kwargs)
+
+
+def avg_pool_nd(dims, *args, **kwargs):
+ """
+ Create a 1D, 2D, or 3D average pooling module.
+ """
+ if dims == 1:
+ return nn.AvgPool1d(*args, **kwargs)
+ elif dims == 2:
+ return nn.AvgPool2d(*args, **kwargs)
+ elif dims == 3:
+ return nn.AvgPool3d(*args, **kwargs)
+ raise ValueError(f"unsupported dimensions: {dims}")
+
+
+class HybridConditioner(nn.Module):
+
+ def __init__(self, c_concat_config, c_crossattn_config):
+ super().__init__()
+ self.concat_conditioner = instantiate_from_config(c_concat_config)
+ self.crossattn_conditioner = instantiate_from_config(c_crossattn_config)
+
+ def forward(self, c_concat, c_crossattn):
+ c_concat = self.concat_conditioner(c_concat)
+ c_crossattn = self.crossattn_conditioner(c_crossattn)
+ return {'c_concat': [c_concat], 'c_crossattn': [c_crossattn]}
+
+
+def noise_like(shape, device, repeat=False):
+ repeat_noise = lambda: torch.randn((1, *shape[1:]), device=device).repeat(shape[0], *((1,) * (len(shape) - 1)))
+ noise = lambda: torch.randn(shape, device=device)
+ return repeat_noise() if repeat else noise()
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..98676e95492b2119335ff29a40f02181eadf0e14
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..86fd0b910406c73f2a34abc1bfb5d6e4f2555068
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..652d35e878b348b105b4de9eddeccf69d23c3bb1
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5bd8de4aaa0706d0326e6ff87bed9b8fb0b67401
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fee865dcaa5bec079a38e471be7c8ffdffa4ba23
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c313ef0d6b10119090b4811459618a91c3bdf55e
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4aaa94beadf284e8388b61bd73162c4bcea2fb45
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-38.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e9a7d7584504255eb5a6abcbe0d95f27963dc0ef
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/__pycache__/distributions.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/distributions.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/distributions.py
new file mode 100644
index 0000000000000000000000000000000000000000..f2b8ef901130efc171aa69742ca0244d94d3f2e9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/distributions/distributions.py
@@ -0,0 +1,92 @@
+import torch
+import numpy as np
+
+
+class AbstractDistribution:
+ def sample(self):
+ raise NotImplementedError()
+
+ def mode(self):
+ raise NotImplementedError()
+
+
+class DiracDistribution(AbstractDistribution):
+ def __init__(self, value):
+ self.value = value
+
+ def sample(self):
+ return self.value
+
+ def mode(self):
+ return self.value
+
+
+class DiagonalGaussianDistribution(object):
+ def __init__(self, parameters, deterministic=False):
+ self.parameters = parameters
+ self.mean, self.logvar = torch.chunk(parameters, 2, dim=1)
+ self.logvar = torch.clamp(self.logvar, -30.0, 20.0)
+ self.deterministic = deterministic
+ self.std = torch.exp(0.5 * self.logvar)
+ self.var = torch.exp(self.logvar)
+ if self.deterministic:
+ self.var = self.std = torch.zeros_like(self.mean).to(device=self.parameters.device)
+
+ def sample(self):
+ x = self.mean + self.std * torch.randn(self.mean.shape).to(device=self.parameters.device)
+ return x
+
+ def kl(self, other=None):
+ if self.deterministic:
+ return torch.Tensor([0.])
+ else:
+ if other is None:
+ return 0.5 * torch.sum(torch.pow(self.mean, 2)
+ + self.var - 1.0 - self.logvar,
+ dim=[1, 2, 3])
+ else:
+ return 0.5 * torch.sum(
+ torch.pow(self.mean - other.mean, 2) / other.var
+ + self.var / other.var - 1.0 - self.logvar + other.logvar,
+ dim=[1, 2, 3])
+
+ def nll(self, sample, dims=[1,2,3]):
+ if self.deterministic:
+ return torch.Tensor([0.])
+ logtwopi = np.log(2.0 * np.pi)
+ return 0.5 * torch.sum(
+ logtwopi + self.logvar + torch.pow(sample - self.mean, 2) / self.var,
+ dim=dims)
+
+ def mode(self):
+ return self.mean
+
+
+def normal_kl(mean1, logvar1, mean2, logvar2):
+ """
+ source: https://github.com/openai/guided-diffusion/blob/27c20a8fab9cb472df5d6bdd6c8d11c8f430b924/guided_diffusion/losses.py#L12
+ Compute the KL divergence between two gaussians.
+ Shapes are automatically broadcasted, so batches can be compared to
+ scalars, among other use cases.
+ """
+ tensor = None
+ for obj in (mean1, logvar1, mean2, logvar2):
+ if isinstance(obj, torch.Tensor):
+ tensor = obj
+ break
+ assert tensor is not None, "at least one argument must be a Tensor"
+
+ # Force variances to be Tensors. Broadcasting helps convert scalars to
+ # Tensors, but it does not work for torch.exp().
+ logvar1, logvar2 = [
+ x if isinstance(x, torch.Tensor) else torch.tensor(x).to(tensor)
+ for x in (logvar1, logvar2)
+ ]
+
+ return 0.5 * (
+ -1.0
+ + logvar2
+ - logvar1
+ + torch.exp(logvar1 - logvar2)
+ + ((mean1 - mean2) ** 2) * torch.exp(-logvar2)
+ )
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/ema.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/ema.py
new file mode 100644
index 0000000000000000000000000000000000000000..bded25019b9bcbcd0260f0b8185f8c7859ca58c4
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/ema.py
@@ -0,0 +1,80 @@
+import torch
+from torch import nn
+
+
+class LitEma(nn.Module):
+ def __init__(self, model, decay=0.9999, use_num_upates=True):
+ super().__init__()
+ if decay < 0.0 or decay > 1.0:
+ raise ValueError('Decay must be between 0 and 1')
+
+ self.m_name2s_name = {}
+ self.register_buffer('decay', torch.tensor(decay, dtype=torch.float32))
+ self.register_buffer('num_updates', torch.tensor(0, dtype=torch.int) if use_num_upates
+ else torch.tensor(-1, dtype=torch.int))
+
+ for name, p in model.named_parameters():
+ if p.requires_grad:
+ # remove as '.'-character is not allowed in buffers
+ s_name = name.replace('.', '')
+ self.m_name2s_name.update({name: s_name})
+ self.register_buffer(s_name, p.clone().detach().data)
+
+ self.collected_params = []
+
+ def reset_num_updates(self):
+ del self.num_updates
+ self.register_buffer('num_updates', torch.tensor(0, dtype=torch.int))
+
+ def forward(self, model):
+ decay = self.decay
+
+ if self.num_updates >= 0:
+ self.num_updates += 1
+ decay = min(self.decay, (1 + self.num_updates) / (10 + self.num_updates))
+
+ one_minus_decay = 1.0 - decay
+
+ with torch.no_grad():
+ m_param = dict(model.named_parameters())
+ shadow_params = dict(self.named_buffers())
+
+ for key in m_param:
+ if m_param[key].requires_grad:
+ sname = self.m_name2s_name[key]
+ shadow_params[sname] = shadow_params[sname].type_as(m_param[key])
+ shadow_params[sname].sub_(one_minus_decay * (shadow_params[sname] - m_param[key]))
+ else:
+ assert not key in self.m_name2s_name
+
+ def copy_to(self, model):
+ m_param = dict(model.named_parameters())
+ shadow_params = dict(self.named_buffers())
+ for key in m_param:
+ if m_param[key].requires_grad:
+ m_param[key].data.copy_(shadow_params[self.m_name2s_name[key]].data)
+ else:
+ assert not key in self.m_name2s_name
+
+ def store(self, parameters):
+ """
+ Save the current parameters for restoring later.
+ Args:
+ parameters: Iterable of `torch.nn.Parameter`; the parameters to be
+ temporarily stored.
+ """
+ self.collected_params = [param.clone() for param in parameters]
+
+ def restore(self, parameters):
+ """
+ Restore the parameters stored with the `store` method.
+ Useful to validate the model with EMA parameters without affecting the
+ original optimization process. Store the parameters before the
+ `copy_to` method. After validation (or model saving), use this to
+ restore the former parameters.
+ Args:
+ parameters: Iterable of `torch.nn.Parameter`; the parameters to be
+ updated with the stored parameters.
+ """
+ for c_param, param in zip(self.collected_params, parameters):
+ param.data.copy_(c_param.data)
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__init__.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f0f2db9adbe03f872cf78cfe7890e20a3d3b45f3
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..98fefd770808fa400d8e74b088ed3a03cba259b5
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a00e9eb2741fdd4ce6fbe50e1351b3bb88b21b73
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/__init__.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-310.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c03de9673812f97b1be31252cd88ddd4040ae263
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-310.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-311.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5524a54a81d3833a29cc4d4e47e149f74dae2da2
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-311.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-39.pyc b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..91e9295f47a03c6286a0100b39751a41570920aa
Binary files /dev/null and b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/__pycache__/modules.cpython-39.pyc differ
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/modules.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/modules.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b51d5ed9737f017ba6a16c742e36aafc86958b0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/encoders/modules.py
@@ -0,0 +1,325 @@
+import math
+import torch
+import torch.nn as nn
+from torch.utils.checkpoint import checkpoint
+
+from transformers import T5Tokenizer, T5EncoderModel, CLIPTokenizer, CLIPTextModel
+from ldm.modules.x_transformer import Encoder, TransformerWrapper # TODO: can we directly rely on lucidrains code and simply add this as a reuirement? --> test
+
+import open_clip
+from ldm.util import default, count_params
+from einops import repeat
+
+class AbstractEncoder(nn.Module):
+ def __init__(self):
+ super().__init__()
+
+ def encode(self, *args, **kwargs):
+ raise NotImplementedError
+
+
+class IdentityEncoder(AbstractEncoder):
+
+ def encode(self, x):
+ return x
+
+
+class ClassEmbedder(nn.Module):
+ def __init__(self, embed_dim, n_classes=1000, key='class', ucg_rate=0.1):
+ super().__init__()
+ self.key = key
+ self.embedding = nn.Embedding(n_classes, embed_dim)
+ self.n_classes = n_classes
+ self.ucg_rate = ucg_rate
+
+ def forward(self, batch, key=None, disable_dropout=False):
+ if key is None:
+ key = self.key
+ # this is for use in crossattn
+ c = batch[key][:, None]
+ if self.ucg_rate > 0. and not disable_dropout:
+ mask = 1. - torch.bernoulli(torch.ones_like(c) * self.ucg_rate)
+ c = mask * c + (1-mask) * torch.ones_like(c)*(self.n_classes-1)
+ c = c.long()
+ c = self.embedding(c)
+ return c
+
+ def get_unconditional_conditioning(self, bs, device="cuda"):
+ uc_class = self.n_classes - 1 # 1000 classes --> 0 ... 999, one extra class for ucg (class 1000)
+ uc = torch.ones((bs,), device=device) * uc_class
+ uc = {self.key: uc}
+ return uc
+
+
+def disabled_train(self, mode=True):
+ """Overwrite model.train with this function to make sure train/eval mode
+ does not change anymore."""
+ return self
+
+class BERTTokenizer(AbstractEncoder):
+ """ Uses a pretrained BERT tokenizer by huggingface. Vocab size: 30522 (?)"""
+ def __init__(self, device="cuda", vq_interface=True, max_length=77):
+ super().__init__()
+ from transformers import BertTokenizerFast # TODO: add to reuquirements
+ self.tokenizer = BertTokenizerFast.from_pretrained("bert-base-uncased")
+ self.device = device
+ self.vq_interface = vq_interface
+ self.max_length = max_length
+
+ def forward(self, text):
+ batch_encoding = self.tokenizer(text, truncation=True, max_length=self.max_length, return_length=True,
+ return_overflowing_tokens=False, padding="max_length", return_tensors="pt")
+ tokens = batch_encoding["input_ids"].to(self.device)
+ return tokens
+
+ @torch.no_grad()
+ def encode(self, text):
+ tokens = self(text)
+ if not self.vq_interface:
+ return tokens
+ return None, None, [None, None, tokens]
+
+ def decode(self, text):
+ return text
+
+class BERTEmbedder(AbstractEncoder):
+ """Uses the BERT tokenizr model and add some transformer encoder layers"""
+ def __init__(self, n_embed, n_layer, vocab_size=30522, max_seq_len=77,
+ device="cuda",use_tokenizer=True, embedding_dropout=0.0):
+ super().__init__()
+ self.use_tknz_fn = use_tokenizer
+ if self.use_tknz_fn:
+ self.tknz_fn = BERTTokenizer(vq_interface=False, max_length=max_seq_len)
+ self.device = device
+ self.transformer = TransformerWrapper(num_tokens=vocab_size, max_seq_len=max_seq_len,
+ attn_layers=Encoder(dim=n_embed, depth=n_layer),
+ emb_dropout=embedding_dropout)
+
+ def forward(self, text):
+ if self.use_tknz_fn:
+ tokens = self.tknz_fn(text)#.to(self.device)
+ else:
+ tokens = text
+ z = self.transformer(tokens, return_embeddings=True)
+ return z
+
+ def encode(self, text):
+ # output of length 77
+ return self(text)
+
+class MedBERTEmbedder(AbstractEncoder):
+ """Uses the BERT tokenizr model and add some transformer encoder layers"""
+ def __init__(self, n_embed, n_layer, vocab_size=30522, max_seq_len=77,
+ device="cuda",use_tokenizer=True, embedding_dropout=0.0):
+ super().__init__()
+ self.use_tknz_fn = use_tokenizer
+ if self.use_tknz_fn:
+ self.tknz_fn = BERTTokenizer(vq_interface=False, max_length=max_seq_len)
+ self.device = device
+ self.transformer = TransformerWrapper(num_tokens=vocab_size, max_seq_len=max_seq_len,
+ attn_layers=Encoder(dim=n_embed, depth=n_layer),
+ emb_dropout=embedding_dropout)
+
+ def forward(self, text):
+ if self.use_tknz_fn:
+ tokens = self.tknz_fn(text)#.to(self.device)
+ else:
+ tokens = text
+ z = self.transformer(tokens, return_embeddings=True)
+ return z
+
+ def encode(self, text):
+ # output of length 77
+ return self(text)
+
+class FrozenT5Embedder(AbstractEncoder):
+ """Uses the T5 transformer encoder for text"""
+ def __init__(self, version="google/t5-v1_1-large", device="cuda", max_length=77, freeze=True): # others are google/t5-v1_1-xl and google/t5-v1_1-xxl
+ super().__init__()
+ self.tokenizer = T5Tokenizer.from_pretrained(version)
+ self.transformer = T5EncoderModel.from_pretrained(version)
+ self.device = device
+ self.max_length = max_length # TODO: typical value?
+ if freeze:
+ self.freeze()
+
+ def freeze(self):
+ self.transformer = self.transformer.eval()
+ #self.train = disabled_train
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, text):
+ batch_encoding = self.tokenizer(text, truncation=True, max_length=self.max_length, return_length=True,
+ return_overflowing_tokens=False, padding="max_length", return_tensors="pt")
+ tokens = batch_encoding["input_ids"].to(self.device)
+ outputs = self.transformer(input_ids=tokens)
+
+ z = outputs.last_hidden_state
+ return z
+
+ def encode(self, text):
+ return self(text)
+
+
+class FrozenCLIPEmbedder(AbstractEncoder):
+ """Uses the CLIP transformer encoder for text (from huggingface)"""
+ LAYERS = [
+ "last",
+ "pooled",
+ "hidden"
+ ]
+ def __init__(self, version="openai/clip-vit-large-patch14", device="cuda", max_length=77,
+ freeze=True, layer="last", layer_idx=None): # clip-vit-base-patch32
+ super().__init__()
+ assert layer in self.LAYERS
+ self.tokenizer = CLIPTokenizer.from_pretrained(version)
+ self.transformer = CLIPTextModel.from_pretrained(version)
+ self.device = device
+ self.max_length = max_length
+ if freeze:
+ self.freeze()
+ self.layer = layer
+ self.layer_idx = layer_idx
+ if layer == "hidden":
+ assert layer_idx is not None
+ assert 0 <= abs(layer_idx) <= 12
+
+ def freeze(self):
+ self.transformer = self.transformer.eval()
+ #self.train = disabled_train
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, text):
+ batch_encoding = self.tokenizer(text, truncation=True, max_length=self.max_length, return_length=True,
+ return_overflowing_tokens=False, padding="max_length", return_tensors="pt")
+ tokens = batch_encoding["input_ids"].to(self.device)
+ outputs = self.transformer(input_ids=tokens, output_hidden_states=self.layer=="hidden")
+ if self.layer == "last":
+ z = outputs.last_hidden_state
+ elif self.layer == "pooled":
+ z = outputs.pooler_output[:, None, :]
+ else:
+ z = outputs.hidden_states[self.layer_idx]
+ return z
+
+ def encode(self, text):
+ return self(text)
+
+
+class FrozenOpenCLIPEmbedder(AbstractEncoder):
+ """
+ Uses the OpenCLIP transformer encoder for text
+ """
+ LAYERS = [
+ #"pooled",
+ "last",
+ "penultimate"
+ ]
+ def __init__(self, arch="ViT-H-14", version="laion2b_s32b_b79k", device="cuda", max_length=77,
+ freeze=True, layer="last"):
+ super().__init__()
+ assert layer in self.LAYERS
+ model, _, _ = open_clip.create_model_and_transforms(arch, device=torch.device('cpu'), pretrained=version)
+ del model.visual
+ self.model = model
+
+ self.device = device
+ self.max_length = max_length
+ if freeze:
+ self.freeze()
+ self.layer = layer
+ if self.layer == "last":
+ self.layer_idx = 0
+ elif self.layer == "penultimate":
+ self.layer_idx = 1
+ else:
+ raise NotImplementedError()
+
+ def freeze(self):
+ self.model = self.model.eval()
+ for param in self.parameters():
+ param.requires_grad = False
+
+ def forward(self, text):
+ tokens = open_clip.tokenize(text)
+ z = self.encode_with_transformer(tokens.to(self.device))
+ return z
+
+ def encode_with_transformer(self, text):
+ x = self.model.token_embedding(text) # [batch_size, n_ctx, d_model]
+ x = x + self.model.positional_embedding
+ x = x.permute(1, 0, 2) # NLD -> LND
+ x = self.text_transformer_forward(x, attn_mask=self.model.attn_mask)
+ x = x.permute(1, 0, 2) # LND -> NLD
+ x = self.model.ln_final(x)
+ return x
+
+ def text_transformer_forward(self, x: torch.Tensor, attn_mask = None):
+ for i, r in enumerate(self.model.transformer.resblocks):
+ if i == len(self.model.transformer.resblocks) - self.layer_idx:
+ break
+ if self.model.transformer.grad_checkpointing and not torch.jit.is_scripting():
+ x = checkpoint(r, x, attn_mask)
+ else:
+ x = r(x, attn_mask=attn_mask)
+ return x
+
+ def encode(self, text):
+ return self(text)
+
+
+class FrozenCLIPT5Encoder(AbstractEncoder):
+ def __init__(self, clip_version="openai/clip-vit-large-patch14", t5_version="google/t5-v1_1-xl", device="cuda",
+ clip_max_length=77, t5_max_length=77):
+ super().__init__()
+ self.clip_encoder = FrozenCLIPEmbedder(clip_version, device, max_length=clip_max_length)
+ self.t5_encoder = FrozenT5Embedder(t5_version, device, max_length=t5_max_length)
+ print(f"{self.clip_encoder.__class__.__name__} has {count_params(self.clip_encoder)*1.e-6:.2f} M parameters, "
+ f"{self.t5_encoder.__class__.__name__} comes with {count_params(self.t5_encoder)*1.e-6:.2f} M params.")
+
+ def encode(self, text):
+ return self(text)
+
+ def forward(self, text):
+ clip_z = self.clip_encoder.encode(text)
+ t5_z = self.t5_encoder.encode(text)
+ return [clip_z, t5_z]
+
+
+def timestep_embedding(timesteps, dim, max_period=10000, repeat_only=False):
+ """
+ Create sinusoidal timestep embeddings.
+ :param timesteps: a 1-D Tensor of N indices, one per batch element.
+ These may be fractional.
+ :param dim: the dimension of the output.
+ :param max_period: controls the minimum frequency of the embeddings.
+ :return: an [N x dim] Tensor of positional embeddings.
+ """
+ if not repeat_only:
+ half = dim // 2
+ freqs = torch.exp(
+ -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half
+ ).to(device=timesteps.device)
+ args = timesteps[:, None].float() * freqs[None]
+ embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1)
+ if dim % 2:
+ embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1)
+ else:
+ embedding = repeat(timesteps, 'b -> b d', d=dim)
+ return embedding
+
+
+class PositionalEmbedder(AbstractEncoder):
+ def __init__(self, dim, max_period=10000, repeat_only=False):
+ super().__init__()
+ self.dim = dim
+ self.max_period = max_period
+ self.repeat_only = repeat_only
+
+ def encode(self, positional_id):
+ return self(positional_id)
+
+ def forward(self, positional_id):
+ return timestep_embedding(1000*positional_id, self.dim, self.max_period, self.repeat_only)
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/x_transformer.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/x_transformer.py
new file mode 100644
index 0000000000000000000000000000000000000000..5fc15bf9cfe0111a910e7de33d04ffdec3877576
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/modules/x_transformer.py
@@ -0,0 +1,641 @@
+"""shout-out to https://github.com/lucidrains/x-transformers/tree/main/x_transformers"""
+import torch
+from torch import nn, einsum
+import torch.nn.functional as F
+from functools import partial
+from inspect import isfunction
+from collections import namedtuple
+from einops import rearrange, repeat, reduce
+
+# constants
+
+DEFAULT_DIM_HEAD = 64
+
+Intermediates = namedtuple('Intermediates', [
+ 'pre_softmax_attn',
+ 'post_softmax_attn'
+])
+
+LayerIntermediates = namedtuple('Intermediates', [
+ 'hiddens',
+ 'attn_intermediates'
+])
+
+
+class AbsolutePositionalEmbedding(nn.Module):
+ def __init__(self, dim, max_seq_len):
+ super().__init__()
+ self.emb = nn.Embedding(max_seq_len, dim)
+ self.init_()
+
+ def init_(self):
+ nn.init.normal_(self.emb.weight, std=0.02)
+
+ def forward(self, x):
+ n = torch.arange(x.shape[1], device=x.device)
+ return self.emb(n)[None, :, :]
+
+
+class FixedPositionalEmbedding(nn.Module):
+ def __init__(self, dim):
+ super().__init__()
+ inv_freq = 1. / (10000 ** (torch.arange(0, dim, 2).float() / dim))
+ self.register_buffer('inv_freq', inv_freq)
+
+ def forward(self, x, seq_dim=1, offset=0):
+ t = torch.arange(x.shape[seq_dim], device=x.device).type_as(self.inv_freq) + offset
+ sinusoid_inp = torch.einsum('i , j -> i j', t, self.inv_freq)
+ emb = torch.cat((sinusoid_inp.sin(), sinusoid_inp.cos()), dim=-1)
+ return emb[None, :, :]
+
+
+# helpers
+
+def exists(val):
+ return val is not None
+
+
+def default(val, d):
+ if exists(val):
+ return val
+ return d() if isfunction(d) else d
+
+
+def always(val):
+ def inner(*args, **kwargs):
+ return val
+ return inner
+
+
+def not_equals(val):
+ def inner(x):
+ return x != val
+ return inner
+
+
+def equals(val):
+ def inner(x):
+ return x == val
+ return inner
+
+
+def max_neg_value(tensor):
+ return -torch.finfo(tensor.dtype).max
+
+
+# keyword argument helpers
+
+def pick_and_pop(keys, d):
+ values = list(map(lambda key: d.pop(key), keys))
+ return dict(zip(keys, values))
+
+
+def group_dict_by_key(cond, d):
+ return_val = [dict(), dict()]
+ for key in d.keys():
+ match = bool(cond(key))
+ ind = int(not match)
+ return_val[ind][key] = d[key]
+ return (*return_val,)
+
+
+def string_begins_with(prefix, str):
+ return str.startswith(prefix)
+
+
+def group_by_key_prefix(prefix, d):
+ return group_dict_by_key(partial(string_begins_with, prefix), d)
+
+
+def groupby_prefix_and_trim(prefix, d):
+ kwargs_with_prefix, kwargs = group_dict_by_key(partial(string_begins_with, prefix), d)
+ kwargs_without_prefix = dict(map(lambda x: (x[0][len(prefix):], x[1]), tuple(kwargs_with_prefix.items())))
+ return kwargs_without_prefix, kwargs
+
+
+# classes
+class Scale(nn.Module):
+ def __init__(self, value, fn):
+ super().__init__()
+ self.value = value
+ self.fn = fn
+
+ def forward(self, x, **kwargs):
+ x, *rest = self.fn(x, **kwargs)
+ return (x * self.value, *rest)
+
+
+class Rezero(nn.Module):
+ def __init__(self, fn):
+ super().__init__()
+ self.fn = fn
+ self.g = nn.Parameter(torch.zeros(1))
+
+ def forward(self, x, **kwargs):
+ x, *rest = self.fn(x, **kwargs)
+ return (x * self.g, *rest)
+
+
+class ScaleNorm(nn.Module):
+ def __init__(self, dim, eps=1e-5):
+ super().__init__()
+ self.scale = dim ** -0.5
+ self.eps = eps
+ self.g = nn.Parameter(torch.ones(1))
+
+ def forward(self, x):
+ norm = torch.norm(x, dim=-1, keepdim=True) * self.scale
+ return x / norm.clamp(min=self.eps) * self.g
+
+
+class RMSNorm(nn.Module):
+ def __init__(self, dim, eps=1e-8):
+ super().__init__()
+ self.scale = dim ** -0.5
+ self.eps = eps
+ self.g = nn.Parameter(torch.ones(dim))
+
+ def forward(self, x):
+ norm = torch.norm(x, dim=-1, keepdim=True) * self.scale
+ return x / norm.clamp(min=self.eps) * self.g
+
+
+class Residual(nn.Module):
+ def forward(self, x, residual):
+ return x + residual
+
+
+class GRUGating(nn.Module):
+ def __init__(self, dim):
+ super().__init__()
+ self.gru = nn.GRUCell(dim, dim)
+
+ def forward(self, x, residual):
+ gated_output = self.gru(
+ rearrange(x, 'b n d -> (b n) d'),
+ rearrange(residual, 'b n d -> (b n) d')
+ )
+
+ return gated_output.reshape_as(x)
+
+
+# feedforward
+
+class GEGLU(nn.Module):
+ def __init__(self, dim_in, dim_out):
+ super().__init__()
+ self.proj = nn.Linear(dim_in, dim_out * 2)
+
+ def forward(self, x):
+ x, gate = self.proj(x).chunk(2, dim=-1)
+ return x * F.gelu(gate)
+
+
+class FeedForward(nn.Module):
+ def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.):
+ super().__init__()
+ inner_dim = int(dim * mult)
+ dim_out = default(dim_out, dim)
+ project_in = nn.Sequential(
+ nn.Linear(dim, inner_dim),
+ nn.GELU()
+ ) if not glu else GEGLU(dim, inner_dim)
+
+ self.net = nn.Sequential(
+ project_in,
+ nn.Dropout(dropout),
+ nn.Linear(inner_dim, dim_out)
+ )
+
+ def forward(self, x):
+ return self.net(x)
+
+
+# attention.
+class Attention(nn.Module):
+ def __init__(
+ self,
+ dim,
+ dim_head=DEFAULT_DIM_HEAD,
+ heads=8,
+ causal=False,
+ mask=None,
+ talking_heads=False,
+ sparse_topk=None,
+ use_entmax15=False,
+ num_mem_kv=0,
+ dropout=0.,
+ on_attn=False
+ ):
+ super().__init__()
+ if use_entmax15:
+ raise NotImplementedError("Check out entmax activation instead of softmax activation!")
+ self.scale = dim_head ** -0.5
+ self.heads = heads
+ self.causal = causal
+ self.mask = mask
+
+ inner_dim = dim_head * heads
+
+ self.to_q = nn.Linear(dim, inner_dim, bias=False)
+ self.to_k = nn.Linear(dim, inner_dim, bias=False)
+ self.to_v = nn.Linear(dim, inner_dim, bias=False)
+ self.dropout = nn.Dropout(dropout)
+
+ # talking heads
+ self.talking_heads = talking_heads
+ if talking_heads:
+ self.pre_softmax_proj = nn.Parameter(torch.randn(heads, heads))
+ self.post_softmax_proj = nn.Parameter(torch.randn(heads, heads))
+
+ # explicit topk sparse attention
+ self.sparse_topk = sparse_topk
+
+ # entmax
+ #self.attn_fn = entmax15 if use_entmax15 else F.softmax
+ self.attn_fn = F.softmax
+
+ # add memory key / values
+ self.num_mem_kv = num_mem_kv
+ if num_mem_kv > 0:
+ self.mem_k = nn.Parameter(torch.randn(heads, num_mem_kv, dim_head))
+ self.mem_v = nn.Parameter(torch.randn(heads, num_mem_kv, dim_head))
+
+ # attention on attention
+ self.attn_on_attn = on_attn
+ self.to_out = nn.Sequential(nn.Linear(inner_dim, dim * 2), nn.GLU()) if on_attn else nn.Linear(inner_dim, dim)
+
+ def forward(
+ self,
+ x,
+ context=None,
+ mask=None,
+ context_mask=None,
+ rel_pos=None,
+ sinusoidal_emb=None,
+ prev_attn=None,
+ mem=None
+ ):
+ b, n, _, h, talking_heads, device = *x.shape, self.heads, self.talking_heads, x.device
+ kv_input = default(context, x)
+
+ q_input = x
+ k_input = kv_input
+ v_input = kv_input
+
+ if exists(mem):
+ k_input = torch.cat((mem, k_input), dim=-2)
+ v_input = torch.cat((mem, v_input), dim=-2)
+
+ if exists(sinusoidal_emb):
+ # in shortformer, the query would start at a position offset depending on the past cached memory
+ offset = k_input.shape[-2] - q_input.shape[-2]
+ q_input = q_input + sinusoidal_emb(q_input, offset=offset)
+ k_input = k_input + sinusoidal_emb(k_input)
+
+ q = self.to_q(q_input)
+ k = self.to_k(k_input)
+ v = self.to_v(v_input)
+
+ q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> b h n d', h=h), (q, k, v))
+
+ input_mask = None
+ if any(map(exists, (mask, context_mask))):
+ q_mask = default(mask, lambda: torch.ones((b, n), device=device).bool())
+ k_mask = q_mask if not exists(context) else context_mask
+ k_mask = default(k_mask, lambda: torch.ones((b, k.shape[-2]), device=device).bool())
+ q_mask = rearrange(q_mask, 'b i -> b () i ()')
+ k_mask = rearrange(k_mask, 'b j -> b () () j')
+ input_mask = q_mask * k_mask
+
+ if self.num_mem_kv > 0:
+ mem_k, mem_v = map(lambda t: repeat(t, 'h n d -> b h n d', b=b), (self.mem_k, self.mem_v))
+ k = torch.cat((mem_k, k), dim=-2)
+ v = torch.cat((mem_v, v), dim=-2)
+ if exists(input_mask):
+ input_mask = F.pad(input_mask, (self.num_mem_kv, 0), value=True)
+
+ dots = einsum('b h i d, b h j d -> b h i j', q, k) * self.scale
+ mask_value = max_neg_value(dots)
+
+ if exists(prev_attn):
+ dots = dots + prev_attn
+
+ pre_softmax_attn = dots
+
+ if talking_heads:
+ dots = einsum('b h i j, h k -> b k i j', dots, self.pre_softmax_proj).contiguous()
+
+ if exists(rel_pos):
+ dots = rel_pos(dots)
+
+ if exists(input_mask):
+ dots.masked_fill_(~input_mask, mask_value)
+ del input_mask
+
+ if self.causal:
+ i, j = dots.shape[-2:]
+ r = torch.arange(i, device=device)
+ mask = rearrange(r, 'i -> () () i ()') < rearrange(r, 'j -> () () () j')
+ mask = F.pad(mask, (j - i, 0), value=False)
+ dots.masked_fill_(mask, mask_value)
+ del mask
+
+ if exists(self.sparse_topk) and self.sparse_topk < dots.shape[-1]:
+ top, _ = dots.topk(self.sparse_topk, dim=-1)
+ vk = top[..., -1].unsqueeze(-1).expand_as(dots)
+ mask = dots < vk
+ dots.masked_fill_(mask, mask_value)
+ del mask
+
+ attn = self.attn_fn(dots, dim=-1)
+ post_softmax_attn = attn
+
+ attn = self.dropout(attn)
+
+ if talking_heads:
+ attn = einsum('b h i j, h k -> b k i j', attn, self.post_softmax_proj).contiguous()
+
+ out = einsum('b h i j, b h j d -> b h i d', attn, v)
+ out = rearrange(out, 'b h n d -> b n (h d)')
+
+ intermediates = Intermediates(
+ pre_softmax_attn=pre_softmax_attn,
+ post_softmax_attn=post_softmax_attn
+ )
+
+ return self.to_out(out), intermediates
+
+
+class AttentionLayers(nn.Module):
+ def __init__(
+ self,
+ dim,
+ depth,
+ heads=8,
+ causal=False,
+ cross_attend=False,
+ only_cross=False,
+ use_scalenorm=False,
+ use_rmsnorm=False,
+ use_rezero=False,
+ rel_pos_num_buckets=32,
+ rel_pos_max_distance=128,
+ position_infused_attn=False,
+ custom_layers=None,
+ sandwich_coef=None,
+ par_ratio=None,
+ residual_attn=False,
+ cross_residual_attn=False,
+ macaron=False,
+ pre_norm=True,
+ gate_residual=False,
+ **kwargs
+ ):
+ super().__init__()
+ ff_kwargs, kwargs = groupby_prefix_and_trim('ff_', kwargs)
+ attn_kwargs, _ = groupby_prefix_and_trim('attn_', kwargs)
+
+ dim_head = attn_kwargs.get('dim_head', DEFAULT_DIM_HEAD)
+
+ self.dim = dim
+ self.depth = depth
+ self.layers = nn.ModuleList([])
+
+ self.has_pos_emb = position_infused_attn
+ self.pia_pos_emb = FixedPositionalEmbedding(dim) if position_infused_attn else None
+ self.rotary_pos_emb = always(None)
+
+ assert rel_pos_num_buckets <= rel_pos_max_distance, 'number of relative position buckets must be less than the relative position max distance'
+ self.rel_pos = None
+
+ self.pre_norm = pre_norm
+
+ self.residual_attn = residual_attn
+ self.cross_residual_attn = cross_residual_attn
+
+ norm_class = ScaleNorm if use_scalenorm else nn.LayerNorm
+ norm_class = RMSNorm if use_rmsnorm else norm_class
+ norm_fn = partial(norm_class, dim)
+
+ norm_fn = nn.Identity if use_rezero else norm_fn
+ branch_fn = Rezero if use_rezero else None
+
+ if cross_attend and not only_cross:
+ default_block = ('a', 'c', 'f')
+ elif cross_attend and only_cross:
+ default_block = ('c', 'f')
+ else:
+ default_block = ('a', 'f')
+
+ if macaron:
+ default_block = ('f',) + default_block
+
+ if exists(custom_layers):
+ layer_types = custom_layers
+ elif exists(par_ratio):
+ par_depth = depth * len(default_block)
+ assert 1 < par_ratio <= par_depth, 'par ratio out of range'
+ default_block = tuple(filter(not_equals('f'), default_block))
+ par_attn = par_depth // par_ratio
+ depth_cut = par_depth * 2 // 3 # 2 / 3 attention layer cutoff suggested by PAR paper
+ par_width = (depth_cut + depth_cut // par_attn) // par_attn
+ assert len(default_block) <= par_width, 'default block is too large for par_ratio'
+ par_block = default_block + ('f',) * (par_width - len(default_block))
+ par_head = par_block * par_attn
+ layer_types = par_head + ('f',) * (par_depth - len(par_head))
+ elif exists(sandwich_coef):
+ assert sandwich_coef > 0 and sandwich_coef <= depth, 'sandwich coefficient should be less than the depth'
+ layer_types = ('a',) * sandwich_coef + default_block * (depth - sandwich_coef) + ('f',) * sandwich_coef
+ else:
+ layer_types = default_block * depth
+
+ self.layer_types = layer_types
+ self.num_attn_layers = len(list(filter(equals('a'), layer_types)))
+
+ for layer_type in self.layer_types:
+ if layer_type == 'a':
+ layer = Attention(dim, heads=heads, causal=causal, **attn_kwargs)
+ elif layer_type == 'c':
+ layer = Attention(dim, heads=heads, **attn_kwargs)
+ elif layer_type == 'f':
+ layer = FeedForward(dim, **ff_kwargs)
+ layer = layer if not macaron else Scale(0.5, layer)
+ else:
+ raise Exception(f'invalid layer type {layer_type}')
+
+ if isinstance(layer, Attention) and exists(branch_fn):
+ layer = branch_fn(layer)
+
+ if gate_residual:
+ residual_fn = GRUGating(dim)
+ else:
+ residual_fn = Residual()
+
+ self.layers.append(nn.ModuleList([
+ norm_fn(),
+ layer,
+ residual_fn
+ ]))
+
+ def forward(
+ self,
+ x,
+ context=None,
+ mask=None,
+ context_mask=None,
+ mems=None,
+ return_hiddens=False
+ ):
+ hiddens = []
+ intermediates = []
+ prev_attn = None
+ prev_cross_attn = None
+
+ mems = mems.copy() if exists(mems) else [None] * self.num_attn_layers
+
+ for ind, (layer_type, (norm, block, residual_fn)) in enumerate(zip(self.layer_types, self.layers)):
+ is_last = ind == (len(self.layers) - 1)
+
+ if layer_type == 'a':
+ hiddens.append(x)
+ layer_mem = mems.pop(0)
+
+ residual = x
+
+ if self.pre_norm:
+ x = norm(x)
+
+ if layer_type == 'a':
+ out, inter = block(x, mask=mask, sinusoidal_emb=self.pia_pos_emb, rel_pos=self.rel_pos,
+ prev_attn=prev_attn, mem=layer_mem)
+ elif layer_type == 'c':
+ out, inter = block(x, context=context, mask=mask, context_mask=context_mask, prev_attn=prev_cross_attn)
+ elif layer_type == 'f':
+ out = block(x)
+
+ x = residual_fn(out, residual)
+
+ if layer_type in ('a', 'c'):
+ intermediates.append(inter)
+
+ if layer_type == 'a' and self.residual_attn:
+ prev_attn = inter.pre_softmax_attn
+ elif layer_type == 'c' and self.cross_residual_attn:
+ prev_cross_attn = inter.pre_softmax_attn
+
+ if not self.pre_norm and not is_last:
+ x = norm(x)
+
+ if return_hiddens:
+ intermediates = LayerIntermediates(
+ hiddens=hiddens,
+ attn_intermediates=intermediates
+ )
+
+ return x, intermediates
+
+ return x
+
+
+class Encoder(AttentionLayers):
+ def __init__(self, **kwargs):
+ assert 'causal' not in kwargs, 'cannot set causality on encoder'
+ super().__init__(causal=False, **kwargs)
+
+
+
+class TransformerWrapper(nn.Module):
+ def __init__(
+ self,
+ *,
+ num_tokens,
+ max_seq_len,
+ attn_layers,
+ emb_dim=None,
+ max_mem_len=0.,
+ emb_dropout=0.,
+ num_memory_tokens=None,
+ tie_embedding=False,
+ use_pos_emb=True
+ ):
+ super().__init__()
+ assert isinstance(attn_layers, AttentionLayers), 'attention layers must be one of Encoder or Decoder'
+
+ dim = attn_layers.dim
+ emb_dim = default(emb_dim, dim)
+
+ self.max_seq_len = max_seq_len
+ self.max_mem_len = max_mem_len
+ self.num_tokens = num_tokens
+
+ self.token_emb = nn.Embedding(num_tokens, emb_dim)
+ self.pos_emb = AbsolutePositionalEmbedding(emb_dim, max_seq_len) if (
+ use_pos_emb and not attn_layers.has_pos_emb) else always(0)
+ self.emb_dropout = nn.Dropout(emb_dropout)
+
+ self.project_emb = nn.Linear(emb_dim, dim) if emb_dim != dim else nn.Identity()
+ self.attn_layers = attn_layers
+ self.norm = nn.LayerNorm(dim)
+
+ self.init_()
+
+ self.to_logits = nn.Linear(dim, num_tokens) if not tie_embedding else lambda t: t @ self.token_emb.weight.t()
+
+ # memory tokens (like [cls]) from Memory Transformers paper
+ num_memory_tokens = default(num_memory_tokens, 0)
+ self.num_memory_tokens = num_memory_tokens
+ if num_memory_tokens > 0:
+ self.memory_tokens = nn.Parameter(torch.randn(num_memory_tokens, dim))
+
+ # let funnel encoder know number of memory tokens, if specified
+ if hasattr(attn_layers, 'num_memory_tokens'):
+ attn_layers.num_memory_tokens = num_memory_tokens
+
+ def init_(self):
+ nn.init.normal_(self.token_emb.weight, std=0.02)
+
+ def forward(
+ self,
+ x,
+ return_embeddings=False,
+ mask=None,
+ return_mems=False,
+ return_attn=False,
+ mems=None,
+ **kwargs
+ ):
+ b, n, device, num_mem = *x.shape, x.device, self.num_memory_tokens
+ x = self.token_emb(x)
+ x += self.pos_emb(x)
+ x = self.emb_dropout(x)
+
+ x = self.project_emb(x)
+
+ if num_mem > 0:
+ mem = repeat(self.memory_tokens, 'n d -> b n d', b=b)
+ x = torch.cat((mem, x), dim=1)
+
+ # auto-handle masking after appending memory tokens
+ if exists(mask):
+ mask = F.pad(mask, (num_mem, 0), value=True)
+
+ x, intermediates = self.attn_layers(x, mask=mask, mems=mems, return_hiddens=True, **kwargs)
+ x = self.norm(x)
+
+ mem, x = x[:, :num_mem], x[:, num_mem:]
+
+ out = self.to_logits(x) if not return_embeddings else x
+
+ if return_mems:
+ hiddens = intermediates.hiddens
+ new_mems = list(map(lambda pair: torch.cat(pair, dim=-2), zip(mems, hiddens))) if exists(mems) else hiddens
+ new_mems = list(map(lambda t: t[..., -self.max_mem_len:, :].detach(), new_mems))
+ return out, new_mems
+
+ if return_attn:
+ attn_maps = list(map(lambda t: t.post_softmax_attn, intermediates.attn_intermediates))
+ return out, attn_maps
+
+ return out
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/util.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/util.py
new file mode 100644
index 0000000000000000000000000000000000000000..45cb050ece6f401a22dde098ce3f1ff663c5eb6a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/ldm/util.py
@@ -0,0 +1,197 @@
+import importlib
+
+import torch
+from torch import optim
+import numpy as np
+
+from inspect import isfunction
+from PIL import Image, ImageDraw, ImageFont
+
+
+def log_txt_as_img(wh, xc, size=10):
+ # wh a tuple of (width, height)
+ # xc a list of captions to plot
+ b = len(xc)
+ txts = list()
+ for bi in range(b):
+ txt = Image.new("RGB", wh, color="white")
+ draw = ImageDraw.Draw(txt)
+ font = ImageFont.truetype('font/DejaVuSans.ttf', size=size)
+ nc = int(40 * (wh[0] / 256))
+ lines = "\n".join(xc[bi][start:start + nc] for start in range(0, len(xc[bi]), nc))
+
+ try:
+ draw.text((0, 0), lines, fill="black", font=font)
+ except UnicodeEncodeError:
+ print("Cant encode string for logging. Skipping.")
+
+ txt = np.array(txt).transpose(2, 0, 1) / 127.5 - 1.0
+ txts.append(txt)
+ txts = np.stack(txts)
+ txts = torch.tensor(txts)
+ return txts
+
+
+def ismap(x):
+ if not isinstance(x, torch.Tensor):
+ return False
+ return (len(x.shape) == 4) and (x.shape[1] > 3)
+
+
+def isimage(x):
+ if not isinstance(x,torch.Tensor):
+ return False
+ return (len(x.shape) == 4) and (x.shape[1] == 3 or x.shape[1] == 1)
+
+
+def exists(x):
+ return x is not None
+
+
+def default(val, d):
+ if exists(val):
+ return val
+ return d() if isfunction(d) else d
+
+
+def mean_flat(tensor):
+ """
+ https://github.com/openai/guided-diffusion/blob/27c20a8fab9cb472df5d6bdd6c8d11c8f430b924/guided_diffusion/nn.py#L86
+ Take the mean over all non-batch dimensions.
+ """
+ return tensor.mean(dim=list(range(1, len(tensor.shape))))
+
+
+def count_params(model, verbose=False):
+ total_params = sum(p.numel() for p in model.parameters())
+ if verbose:
+ print(f"{model.__class__.__name__} has {total_params*1.e-6:.2f} M params.")
+ return total_params
+
+
+def instantiate_from_config(config):
+ if not "target" in config:
+ if config == '__is_first_stage__':
+ return None
+ elif config == "__is_unconditional__":
+ return None
+ raise KeyError("Expected key `target` to instantiate.")
+ return get_obj_from_str(config["target"])(**config.get("params", dict()))
+
+
+def get_obj_from_str(string, reload=False):
+ module, cls = string.rsplit(".", 1)
+ if reload:
+ module_imp = importlib.import_module(module)
+ importlib.reload(module_imp)
+ return getattr(importlib.import_module(module, package=None), cls)
+
+
+class AdamWwithEMAandWings(optim.Optimizer):
+ # credit to https://gist.github.com/crowsonkb/65f7265353f403714fce3b2595e0b298
+ def __init__(self, params, lr=1.e-3, betas=(0.9, 0.999), eps=1.e-8, # TODO: check hyperparameters before using
+ weight_decay=1.e-2, amsgrad=False, ema_decay=0.9999, # ema decay to match previous code
+ ema_power=1., param_names=()):
+ """AdamW that saves EMA versions of the parameters."""
+ if not 0.0 <= lr:
+ raise ValueError("Invalid learning rate: {}".format(lr))
+ if not 0.0 <= eps:
+ raise ValueError("Invalid epsilon value: {}".format(eps))
+ if not 0.0 <= betas[0] < 1.0:
+ raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0]))
+ if not 0.0 <= betas[1] < 1.0:
+ raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1]))
+ if not 0.0 <= weight_decay:
+ raise ValueError("Invalid weight_decay value: {}".format(weight_decay))
+ if not 0.0 <= ema_decay <= 1.0:
+ raise ValueError("Invalid ema_decay value: {}".format(ema_decay))
+ defaults = dict(lr=lr, betas=betas, eps=eps,
+ weight_decay=weight_decay, amsgrad=amsgrad, ema_decay=ema_decay,
+ ema_power=ema_power, param_names=param_names)
+ super().__init__(params, defaults)
+
+ def __setstate__(self, state):
+ super().__setstate__(state)
+ for group in self.param_groups:
+ group.setdefault('amsgrad', False)
+
+ @torch.no_grad()
+ def step(self, closure=None):
+ """Performs a single optimization step.
+ Args:
+ closure (callable, optional): A closure that reevaluates the model
+ and returns the loss.
+ """
+ loss = None
+ if closure is not None:
+ with torch.enable_grad():
+ loss = closure()
+
+ for group in self.param_groups:
+ params_with_grad = []
+ grads = []
+ exp_avgs = []
+ exp_avg_sqs = []
+ ema_params_with_grad = []
+ state_sums = []
+ max_exp_avg_sqs = []
+ state_steps = []
+ amsgrad = group['amsgrad']
+ beta1, beta2 = group['betas']
+ ema_decay = group['ema_decay']
+ ema_power = group['ema_power']
+
+ for p in group['params']:
+ if p.grad is None:
+ continue
+ params_with_grad.append(p)
+ if p.grad.is_sparse:
+ raise RuntimeError('AdamW does not support sparse gradients')
+ grads.append(p.grad)
+
+ state = self.state[p]
+
+ # State initialization
+ if len(state) == 0:
+ state['step'] = 0
+ # Exponential moving average of gradient values
+ state['exp_avg'] = torch.zeros_like(p, memory_format=torch.preserve_format)
+ # Exponential moving average of squared gradient values
+ state['exp_avg_sq'] = torch.zeros_like(p, memory_format=torch.preserve_format)
+ if amsgrad:
+ # Maintains max of all exp. moving avg. of sq. grad. values
+ state['max_exp_avg_sq'] = torch.zeros_like(p, memory_format=torch.preserve_format)
+ # Exponential moving average of parameter values
+ state['param_exp_avg'] = p.detach().float().clone()
+
+ exp_avgs.append(state['exp_avg'])
+ exp_avg_sqs.append(state['exp_avg_sq'])
+ ema_params_with_grad.append(state['param_exp_avg'])
+
+ if amsgrad:
+ max_exp_avg_sqs.append(state['max_exp_avg_sq'])
+
+ # update the steps for each param group update
+ state['step'] += 1
+ # record the step after step update
+ state_steps.append(state['step'])
+
+ optim._functional.adamw(params_with_grad,
+ grads,
+ exp_avgs,
+ exp_avg_sqs,
+ max_exp_avg_sqs,
+ state_steps,
+ amsgrad=amsgrad,
+ beta1=beta1,
+ beta2=beta2,
+ lr=group['lr'],
+ weight_decay=group['weight_decay'],
+ eps=group['eps'],
+ maximize=False)
+
+ cur_ema_decay = min(ema_decay, 1 - state['step'] ** -ema_power)
+ for param, ema_param in zip(params_with_grad, ema_params_with_grad):
+ ema_param.mul_(cur_ema_decay).add_(param.float(), alpha=1 - cur_ema_decay)
+
+ return loss
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000723.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000723.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..1b6f5dec5f587c0636b283c13f6c4b8b6acb87d0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000723.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e80356e7e689dde5669b42aeda58676985d967b17ac06cf8749ffc1178d0f55f
+size 7325151006
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000847.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000847.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..5f8ae131557a6fffa1cd50f1828f29d4cfd99b44
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000847.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21a82d682b3452c522bd202f3eac5e0e0602cfe09d75e9a03414655e7d951a3e
+size 7325151006
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000931.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000931.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..0d427a5122614fa819140c7c05c71a53bb7b252e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000931.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed30f6c4649b39308b03bfbeb8ba8d1a07029ab02d2c5120544a632d464376a4
+size 7325158367
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..22cc28daea3f6a6d82cdae7c89070a62adb83d40
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2be78b7c1e808649d1f56377ed269dcd452e2105c5cd7458ddee0933829bb04
+size 7325158558
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..22cc28daea3f6a6d82cdae7c89070a62adb83d40
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2be78b7c1e808649d1f56377ed269dcd452e2105c5cd7458ddee0933829bb04
+size 7325158558
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9b88d453925a3fab5830877d511e0665c0ac8e7b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-lightning.yaml
@@ -0,0 +1,12 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T15-52-32-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9b88d453925a3fab5830877d511e0665c0ac8e7b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-lightning.yaml
@@ -0,0 +1,12 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-52-29-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9b88d453925a3fab5830877d511e0665c0ac8e7b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-lightning.yaml
@@ -0,0 +1,12 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T17-59-11-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-17T18-34-00-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-22T21-36-50-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-23T23-44-47-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-24T02-55-56-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ae4e23f6ed7bf2ea789aa6df326117a0e04c9f0e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0818df4c2ab0bb444ad6babe59b9bce57001c083
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/configs/2025-10-28T21-58-24-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ee60200391b526a1a0d4a858176a7bdb039756a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4a54c2062ea11ea17c338cf96c2e771121207ef2f1a591aa6f6ce442312130a
+size 124613
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ee6ebbfd4708aa89b0340c3998f36195b69bc1c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d67b99250929716ec8cbd9ef7deb541f5ba4d05eb29fe91d563a2289b2325a4c
+size 143188
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9606b56b71a15ab5f7c1114c66d10cf5fbcfa1c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_10.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:14dc7c2f3c86828343dc3a7347400eabf679cfc2e20bb8ed20f9f2711fe95792
+size 145575
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0de3a498a603a854bce7be37898651872f2e76d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_11.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef69095ef21bd097e7761888e17c5656fe10dc594b2488d707dd30986e5fa775
+size 144443
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png
new file mode 100644
index 0000000000000000000000000000000000000000..481d227db609f2ad340e0b1fef61cadb2402a02c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_12.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27a16bfe2481a8a23c4215759c8e288569574338146cae52ee7bd739ce984c27
+size 144046
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png
new file mode 100644
index 0000000000000000000000000000000000000000..daa8b2ae0881738fc435931d4544f3254bc92002
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_13.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:302971ac95e7250b2b2a5e91bd341d6f85b745ae2d6197d0e1f2e341691f0ecf
+size 144826
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png
new file mode 100644
index 0000000000000000000000000000000000000000..446f26e6b04696385c37a765090a7e6dd888039b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_14.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ccdee653174f5bcd5b31d0735fd03454d824b6454aa78ec42d0f8de9b64345b
+size 147118
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png
new file mode 100644
index 0000000000000000000000000000000000000000..46a266309a1ed8d571770586f94e97379340f529
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_15.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd7b9b39335aef2458d6d04b805c65d2d00e06533591f23d2de9574eef05faf8
+size 148042
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png
new file mode 100644
index 0000000000000000000000000000000000000000..8cf4619f685f31b65ad4abda4520209fc1712903
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_16.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa2a66a89553298b78f13e1629457b6eb888917f795d844d370d0ebcced44ea0
+size 147371
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png
new file mode 100644
index 0000000000000000000000000000000000000000..95b0e264eff9fedaad8a8c7e2dec91e579ac6a87
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_17.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c66bf09948b9d9fc88412bc78fcfa5684bb4756caea69e98cd90e6181a4c92ff
+size 152036
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png
new file mode 100644
index 0000000000000000000000000000000000000000..9503933431c4e3352e9c30513016af51195becb6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_18.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6211437088e760b772b1c6e40d5861353eef9a6ad4db16d36c0bf0a2cb7d5829
+size 154391
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png
new file mode 100644
index 0000000000000000000000000000000000000000..8309963294db0121077804265d37bfd1aac886b0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_19.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c98d5873d42db01c48b0557101f3851499a4fdb7bc95a8508ea11db0decf7c3a
+size 156291
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..5708c87cab4bb77b3a1537b535d3ac14f1fa756e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:30392cf7be9c6d6394fc0629bfef20e1f555a890d42ac822866f0572de622791
+size 146814
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png
new file mode 100644
index 0000000000000000000000000000000000000000..0617e5297ebdf0c830691a2561f8b36f91e914c6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_20.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a5392443c3f1ea545085d595d393a884295e608706fcc46c00784363acbe007
+size 156151
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png
new file mode 100644
index 0000000000000000000000000000000000000000..d721f175de901473752d1ef87b5daa8c6ae01b82
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_21.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:467141f0a60b77041a721dba5df9ee1c1e7140588c0be3c276a1a1d36b527a9a
+size 157144
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png
new file mode 100644
index 0000000000000000000000000000000000000000..c19cc2cb787858172c5c840c81336443df68af5a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_22.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8c43dde5db037d6f55552b61d2b9d4d4343b4973b8588aab2b24b1bd52dddc5
+size 158857
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png
new file mode 100644
index 0000000000000000000000000000000000000000..27af082f6962328533ae7428d2407ee617a37445
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_23.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:869c97403d82788f70a54f822e6365e2952f15f30b5046edc496de47fe96b59b
+size 160399
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd4e1109e619cd28be5802784ed369eb2e7ac02f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_24.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:562e84bfab2c18b142edcfb00dfe1099486e65bdcbe862520f22c4d8f6aabaae
+size 160214
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e620323d2c302336904015d039f66cee1f6bb4c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_25.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d670f2e63863fec40b7587c8fcd45f7c34763607e0a202fd1fc80cdb3a423f8
+size 157222
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1783862d086f0d3906442c02fe4b11e97645bf9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_26.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dba30e9a5227bec10b9b4c9209e8852238d8ead49cd13f67c9a8f20e87dc0d06
+size 158003
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png
new file mode 100644
index 0000000000000000000000000000000000000000..7801920fd15ed970bb15bfb883679407c22c42ce
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_27.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4e58887379c14bb9e3a164355319563d992e6ff764d460b2d6a001ca4966c1f
+size 157970
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0eb5a9cd2a6fb0816f4cfdca7ed5a33ec12d616
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_28.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e180706c0e59a8b530c9377925a42377c14fd8bd213eeb90c56b69bbabbdfaff
+size 158182
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9067fef3a15b28fb716bb2ee88d7723483189ca
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_29.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32fa32b634eaaa21e3772b255d51fb0711f195f1895f554eebb5a794c4974a66
+size 156811
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..9356921b72b2ef896fd4e6baf9cdce98625d0201
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c8989bd7a7700dbc04259a40a4764d3c06c3372487cbf4f85c7ad6f203dcba7
+size 149100
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b0e45d2f1702100c8e139c919bfce5a6bbb6e49
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_30.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:06d77fc6e7826a0365a53f81d2214360e6f6bba15260c7321cc20617b6088a33
+size 157771
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b9e9c547111787f0611c36876e0e8a89f1e1dc3
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_31.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f522a27ec891d72f57b969a3776582418a6842b3b864cc58e98bb9c8490f7420
+size 158357
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ff4532747ef0fb881394b53f260af736363ce1e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_32.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5c17d46bb6c35aae0d0f8f9de35302f1366b2c4d7066272fc8ad14422a88f6a5
+size 158494
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a4e02cdcfd3fa7e7cae1bfed5dae33e6c6a810a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_33.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:51e8e3e887c2dbfb4d7c5c9f959ab804f07a1cef5349d17dc05f359141bd143c
+size 156823
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3d02972e933d84fbd98f0f5304975475b9983eb
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_34.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:076b731feb70b5eb1a527ce05b3c3d634c755f77c9f77fa16d3e198539d9cb99
+size 158004
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f421658a4e1ff2923a8ddd4061228e741c37432
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_35.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10fcbc5c7c073b223266e5c96e2162c691a523cf455d5803a1328d4241b6b2f6
+size 158178
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1db72f91e3c1cbc659a44ed36e204b4f4b693a5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_36.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a942c149ab3dec193d115407b4a4ec1f0f38eb633a7575856899eadd6b05c21
+size 158128
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdc8aa4c49e3e63ab705b389d58ac3b5ec4e6f40
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_37.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e3bb4df73daf9eba0b9a9a43eb1d036f42a46294ad2d2eed8c44a19c7fa8fe0
+size 156938
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png
new file mode 100644
index 0000000000000000000000000000000000000000..db6fd3ebfad2ea81adb33efa6e6d3e2ce13d21d9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_38.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27169cd184c5b7d778f96a78657b40d728a1821bc6a91986c883ac16a29d018f
+size 158601
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png
new file mode 100644
index 0000000000000000000000000000000000000000..b42f65e234d10e765054c0ad41198adc1701ce8a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_39.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45b691885c6a2d6fad3336aef28655894c4a367f77677f49b9e99a4a1265dd31
+size 159718
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9c0387457842b41762fc4c8af65afaf4a5f2e0a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_4.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebec81bcc47c75ef3b7a7375037666486a411275d322d552819f1fde23525146
+size 148802
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png
new file mode 100644
index 0000000000000000000000000000000000000000..7db48989a06d3491f20f17b61cfa288fbfe6ff6a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_40.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7ad32d1aacf4e1da6be7b0373bd9a06d0220a5e4d8fd6ebc3a5f4143c1b640c
+size 159720
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png
new file mode 100644
index 0000000000000000000000000000000000000000..03bd2a117245966214f0054ebfb6776c444b4a96
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_41.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e77e05a088aa5e8c7d2a20d77b5746339f9469b159d9d5fbdbbe3169809deb7
+size 160669
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7a3c6d6559f3d6fe3b3ae0e54b09a8a52010144
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_42.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f05a7879bf76b3c012d7f6ea32ec9ce2073857a3e31715911eb65be91fbad3e6
+size 162020
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png
new file mode 100644
index 0000000000000000000000000000000000000000..44f843ba4eb86ebc6927b6ed25a75a64cd11c9cd
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_43.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5eece457cdbbcd87e7f69f4ed0a5af664366c4d98435e06eb994348d27fa20f
+size 163491
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png
new file mode 100644
index 0000000000000000000000000000000000000000..38ed1d275edc463c9799be7bae494b1e8697eceb
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_44.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44009b57f4b09bc88ec00d47e19719157216d7c6fd304fed9575874189185947
+size 163212
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb2448937977354044f7637f87db492759a0c33e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_45.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:87825b8e2e676c286e2a9b6750e3234f66be13f6a17fceaba0c26bb54ea7d300
+size 162906
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png
new file mode 100644
index 0000000000000000000000000000000000000000..92948af00428a141bba36e5a24f80a5fa1df4fad
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_46.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af5f700c24194f1662b2f87283846556ca981b891de4f7875428ded55c6e0dc0
+size 163840
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ad5b993a3d45efeadcec47d9dd104c80ce864f5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_47.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7e33358933ba7d40ea075f7cc8af21428e5566e11b549ca17380a46a5c6f477
+size 165034
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png
new file mode 100644
index 0000000000000000000000000000000000000000..26ab1e44dca29b1fa7938dd627766a488a7f86f0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_48.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:280aea6206b9ad9e19ee96c9996ba58bd3f73632f13add3d180b0d36e3379120
+size 164329
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc0c432948af855c3d2289b0a220fa3374112ffd
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_49.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:789336fbb908b2c3ab1492685824a6de2bfb02cea78d5eb13dc4a41d59be7b2c
+size 161300
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..9d20d3e527ba78606512c6591d729492bd7b1e6a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_5.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:998918e334f10bb9b11e3fff937891c74c2b5980154c73d6cc50d0e05f5d772c
+size 150219
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png
new file mode 100644
index 0000000000000000000000000000000000000000..f3e9fc61b34a425575214068579570ca41ea91b4
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_50.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a2c714cf1be47c32d826297e6b5b49688f3a5ddbbd889446aad43fcc8a96907
+size 162189
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png
new file mode 100644
index 0000000000000000000000000000000000000000..84f65b202ea90c3bccef04530aea7810db4f7b60
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_51.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4032613f31eb464c9158d90399245c5ed06c55b85dd0ba89ed0edff9b6c49734
+size 162869
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png
new file mode 100644
index 0000000000000000000000000000000000000000..024b6e6261b6f929343d652593b74b178679d726
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_52.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ee42efc3fb0aa60a7a8b985baab9a2efc28b8a3d1f3fc7a8b6f94ce6c9f5605
+size 161916
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png
new file mode 100644
index 0000000000000000000000000000000000000000..66835c31d83570fc6fed77ff70ba37dbc1b4524d
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_53.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61831d499518fe7d39fde16e76452c9682d86fbaa26434dd070df0504064fbe4
+size 162515
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png
new file mode 100644
index 0000000000000000000000000000000000000000..029fb27d7ebe3a0562fe147b4770e31a0a6354df
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_54.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ecb9849a5ad024fe5b1af8244b0fc08ee2d3fd367ebfa17e5a01cefd1084c059
+size 164681
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png
new file mode 100644
index 0000000000000000000000000000000000000000..f18bf61c4142b4f7c00b5fab80f660ef92db7ae7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_55.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7f9fc20467fa738d5236d83f55eb32ccd6908729c71386ef205e395ada5b030d
+size 165440
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png
new file mode 100644
index 0000000000000000000000000000000000000000..d31071d31c9c2d87102a8016ae4f17499ecccee7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_56.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b6e55ec6dc0d8aaf0cb4c4dfbfa5f25580d4223d4bec4d2c272d8b0c44264a4a
+size 164683
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png
new file mode 100644
index 0000000000000000000000000000000000000000..25e9e4dfb88d707d77198f82bc3c92b7064ab912
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_57.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f1902e514c287a12bbb04486660866b1ca30561add403a1cc6b457cbad14dcc
+size 164095
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png
new file mode 100644
index 0000000000000000000000000000000000000000..1de459c05c8536a076e6ae0f133acf1c40b5c79f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_58.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10346436131957cf11c02a7b82a1780b0350c37050e09e3684dce12df8bf215b
+size 165216
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d0f4d13089d01c24f0322648035c7b28d5474f7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_59.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02c0e0649a76a560aa4cae9154c76333c05a5aada68c81a669245a41cef3f039
+size 166816
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..8193f8c06b301570d60b2244acb9ccd445fd0171
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_6.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc50dcd187164c466ca5dd63b7aea8a283984a267bdb703a0ac5e4d0cb05b9bc
+size 152525
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png
new file mode 100644
index 0000000000000000000000000000000000000000..be9a70e3f53053cd2cec3bb0f63aef175871825b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_60.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3fb2445e080ca096dad103ab3d6498456995073dab6aac6a28bae25f4cfc5f96
+size 166034
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d218dff6822686bd6f178218b05eeee648de998
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_61.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f5deac67c062cf58db51dbc05c7e6acf3a7220907ba88bbdf7c434d87856de8
+size 158781
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2b970352ef43a4cc08dd0e444a45fa7b264dd59
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_62.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd86a60c1834cc989c41f2fddbc62e41f204746da4e498a2c86697e07ed06bee
+size 158698
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png
new file mode 100644
index 0000000000000000000000000000000000000000..b7ef95dc140bfa3b7333d2b16352c2559b305629
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_63.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e47fd0422c75122f610ce84434dbac912fda4a94c8dabdfea9133161efb2a32c
+size 157307
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png
new file mode 100644
index 0000000000000000000000000000000000000000..db869e4542e314b27ba1873c8b5dc7505fbfd1b5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_64.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a40ed64b5fca49c441a755be5506fff06a895895a12c8ba072e96e40c3e1130e
+size 155781
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png
new file mode 100644
index 0000000000000000000000000000000000000000..520dc8548612d95b1bfd59474da09bdeb4ba2a29
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_7.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90ec6878b93132e56f160e772c71a897581351660cbbcb36f6cf044d09e94c22
+size 153537
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png
new file mode 100644
index 0000000000000000000000000000000000000000..ccc5a091a51272a7da75c7b1a503b11dc602c6e5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_8.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:70aeb61a79e78873b6e89877f5702fcca77d7163e7c2fa1aade8006d66005c1b
+size 153358
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png
new file mode 100644
index 0000000000000000000000000000000000000000..02c026c2976b7e0f96757db28c70904552e35afa
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/inference/valid_5_a_2_sample_9.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a730537b90b4ed76f48bb1777fb8e1b068be282a4adfd339966f551b4509c33
+size 145969
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..0d93c05b020efb6d44bd3a68dbe475c9b2823212
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 15:52:46.348646", "exp_hash": "testtube_v0"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/metrics.csv
@@ -0,0 +1 @@
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1760716366.GCRAZGDL1134.3459166.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1760716366.GCRAZGDL1134.3459166.0
new file mode 100644
index 0000000000000000000000000000000000000000..df3de274a68795855449344e585c805a90352df2
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1760716366.GCRAZGDL1134.3459166.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3be9be1c58f4b81e461fa3876fdfacc3ccc4a1a1b84424aaf05adbc08588f67
+size 88
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..f6e479eca7bd09e25c49bf1cec87475c11ca3f11
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 1, "tags_path": "logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 17:52:44.411163", "exp_hash": "testtube_v1"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/metrics.csv
@@ -0,0 +1 @@
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/tf/events.out.tfevents.1760723564.GCRAZGDL1134.3511264.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/tf/events.out.tfevents.1760723564.GCRAZGDL1134.3511264.0
new file mode 100644
index 0000000000000000000000000000000000000000..7e245023db473ba45b3eb64ec8bc46ffd35226ac
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_1/tf/events.out.tfevents.1760723564.GCRAZGDL1134.3511264.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11ebb2d5c722e1b091fbcee3bf440c0a3739041f1760739da867b28c3565ce57
+size 88
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..333d9f35185b7e238fb0c1df37781fb3f426a3f0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 2, "tags_path": "logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 17:59:42.422136", "exp_hash": "testtube_v2"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/metrics.csv
@@ -0,0 +1 @@
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/tf/events.out.tfevents.1760723982.GCRAZGDL1134.3513118.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/tf/events.out.tfevents.1760723982.GCRAZGDL1134.3513118.0
new file mode 100644
index 0000000000000000000000000000000000000000..8fffd10fc98e7013795e6cb0606eb33d8cb3e9a5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_2/tf/events.out.tfevents.1760723982.GCRAZGDL1134.3513118.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c818718421268d3589af764844314ea4957c66281b90d06160ab9e0cecb6ce2a
+size 88
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..f1fc8b87b5a29778393c5ce4be83ddb823d0da51
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 3, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-17 18:35:02.478598", "exp_hash": "testtube_v3"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..b61a64e74ed62daa4d39b68090532805bb45f290
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/metrics.csv
@@ -0,0 +1,2721 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.9851170778274536,0.009150303900241852,0.9851170778274536,49.0,1,2025-10-17 18:44:02.222954,,,,,,,,,
+,,,,1,2025-10-17 18:46:26.989901,0.981236457824707,0.006649507209658623,0.981236457824707,0.98316490650177,0.007285161409527063,0.98316490650177,,,
+,,,,1,2025-10-17 18:47:15.190019,,,,,,,0.9911747574806213,0.00719443429261446,0.9911747574806213
+0.9657329320907593,0.0062154242768883705,0.9657329320907593,99.0,2,2025-10-17 18:53:26.581241,,,,,,,,,
+,,,,2,2025-10-17 18:56:39.948160,0.9561178088188171,0.005563000682741404,0.9561178088188171,0.9610190391540527,0.007246658205986023,0.9610190391540527,,,
+,,,,2,2025-10-17 18:57:29.260266,,,,,,,0.9682849645614624,0.006537227425724268,0.9682849645614624
+0.9389209747314453,0.008675165474414825,0.9389209747314453,149.0,3,2025-10-17 19:01:35.534195,,,,,,,,,
+,,,,3,2025-10-17 19:06:00.146101,0.92439866065979,0.006780252791941166,0.92439866065979,0.9351450800895691,0.006474595051258802,0.9351450800895691,,,
+,,,,3,2025-10-17 19:06:51.366364,,,,,,,0.939170777797699,0.0067930687218904495,0.939170777797699
+0.913748562335968,0.007361140567809343,0.913748562335968,199.0,4,2025-10-17 19:10:29.788559,,,,,,,,,
+,,,,4,2025-10-17 19:15:37.762424,0.8854535222053528,0.006076432764530182,0.8854535222053528,0.9040988683700562,0.006457638461142778,0.9040988683700562,,,
+,,,,4,2025-10-17 19:16:27.164775,,,,,,,0.9057185649871826,0.006699384655803442,0.9057185649871826
+0.8822274208068848,0.008031590841710567,0.8822274208068848,249.0,5,2025-10-17 19:18:21.635829,,,,,,,,,
+0.8508741855621338,0.004980886355042458,0.8508741855621338,299.0,5,2025-10-17 19:23:21.175448,,,,,,,,,
+,,,,5,2025-10-17 19:25:04.521385,0.8488612174987793,0.005738584790378809,0.8488612174987793,0.8680912852287292,0.005968952551484108,0.8680912852287292,,,
+,,,,5,2025-10-17 19:25:54.506837,,,,,,,0.8687622547149658,0.006215198896825314,0.8687622547149658
+0.8212798833847046,0.00797971710562706,0.8212798833847046,349.0,6,2025-10-17 19:31:58.832795,,,,,,,,,
+,,,,6,2025-10-17 19:34:16.968722,0.8143215179443359,0.006489977706223726,0.8143215179443359,0.8337346911430359,0.007622663397341967,0.8337346911430359,,,
+,,,,6,2025-10-17 19:35:05.667853,,,,,,,0.83077073097229,0.006580478977411985,0.83077073097229
+0.7907417416572571,0.009680070914328098,0.7907417416572571,399.0,7,2025-10-17 19:40:03.535418,,,,,,,,,
+,,,,7,2025-10-17 19:43:16.593378,0.7794260382652283,0.007215758785605431,0.7794260382652283,0.8026125431060791,0.005952559877187014,0.8026125431060791,,,
+,,,,7,2025-10-17 19:44:06.221003,,,,,,,0.7930805087089539,0.005942213349044323,0.7930805087089539
+0.7559014558792114,0.004296557046473026,0.7559014558792114,449.0,8,2025-10-17 19:48:14.899253,,,,,,,,,
+,,,,8,2025-10-17 19:52:28.885823,0.7415792942047119,0.005352153908461332,0.7415792942047119,0.7671114206314087,0.006520677823573351,0.7671114206314087,,,
+,,,,8,2025-10-17 19:53:21.222873,,,,,,,0.7558329701423645,0.005900911521166563,0.7558329701423645
+0.7324256300926208,0.0036078195553272963,0.7324256300926208,499.0,9,2025-10-17 19:56:22.205259,,,,,,,,,
+,,,,9,2025-10-17 20:01:37.782939,0.7063193917274475,0.005720220506191254,0.7063193917274475,0.7363706827163696,0.007241578307002783,0.7363706827163696,,,
+,,,,9,2025-10-17 20:02:26.640233,,,,,,,0.7236968278884888,0.005440713372081518,0.7236968278884888
+0.6991230845451355,0.007429489400237799,0.6991230845451355,549.0,10,2025-10-17 20:04:11.476089,,,,,,,,,
+0.6930344700813293,0.007134787272661924,0.6930344700813293,599.0,10,2025-10-17 20:08:57.895505,,,,,,,,,
+,,,,10,2025-10-17 20:10:30.702198,0.6808200478553772,0.005121209193021059,0.6808200478553772,0.7103968262672424,0.006958813406527042,0.7103968262672424,,,
+,,,,10,2025-10-17 20:11:23.068116,,,,,,,0.6923302412033081,0.005641557741910219,0.6923302412033081
+0.6435641646385193,0.0033329841680824757,0.6435641646385193,649.0,11,2025-10-17 20:17:07.307463,,,,,,,,,
+,,,,11,2025-10-17 20:19:20.073531,0.645767331123352,0.005204854998737574,0.645767331123352,0.6829339861869812,0.005836974363774061,0.6829339861869812,,,
+,,,,11,2025-10-17 20:20:09.303774,,,,,,,0.661441445350647,0.005304188467562199,0.661441445350647
+0.6299411058425903,0.006884862203150988,0.6299411058425903,699.0,12,2025-10-17 20:25:00.791500,,,,,,,,,
+,,,,12,2025-10-17 20:28:04.464326,0.6220085620880127,0.004106961190700531,0.6220085620880127,0.6562986373901367,0.005694694817066193,0.6562986373901367,,,
+,,,,12,2025-10-17 20:28:53.065200,,,,,,,0.6316497921943665,0.004960454069077969,0.6316497921943665
+0.6002478003501892,0.00353260082192719,0.6002478003501892,749.0,13,2025-10-17 20:32:57.698371,,,,,,,,,
+,,,,13,2025-10-17 20:37:14.141018,0.6010312438011169,0.005120682530105114,0.6010312438011169,0.6330088376998901,0.0045606400817632675,0.6330088376998901,,,
+,,,,13,2025-10-17 20:38:02.656536,,,,,,,0.606263279914856,0.005404278170317411,0.606263279914856
+0.5786494016647339,0.0036265698727220297,0.5786494016647339,799.0,14,2025-10-17 20:41:13.834427,,,,,,,,,
+,,,,14,2025-10-17 20:46:20.524986,0.5741392970085144,0.004329998511821032,0.5741392970085144,0.6058800220489502,0.00605494249612093,0.6058800220489502,,,
+,,,,14,2025-10-17 20:47:08.506296,,,,,,,0.5820572376251221,0.005061776842921972,0.5820572376251221
+0.5741428732872009,0.00718876626342535,0.5741428732872009,849.0,15,2025-10-17 20:49:07.080406,,,,,,,,,
+0.5246618390083313,0.0026777973398566246,0.5246618390083313,899.0,15,2025-10-17 20:53:50.989321,,,,,,,,,
+,,,,15,2025-10-17 20:55:21.249419,0.5468762516975403,0.00487175490707159,0.5468762516975403,0.5833101868629456,0.0060044992715120316,0.5833101868629456,,,
+,,,,15,2025-10-17 20:56:08.634724,,,,,,,0.5592496991157532,0.005075080785900354,0.5592496991157532
+0.5308948159217834,0.0026686261408030987,0.5308948159217834,949.0,16,2025-10-17 21:02:03.701252,,,,,,,,,
+,,,,16,2025-10-17 21:04:19.765037,0.5267952084541321,0.0040120226331055164,0.5267952084541321,0.5639071464538574,0.004622844513505697,0.5639071464538574,,,
+,,,,16,2025-10-17 21:05:09.488585,,,,,,,0.5372046828269958,0.004532735329121351,0.5372046828269958
+0.5284709930419922,0.0029939578380435705,0.5284709930419922,999.0,17,2025-10-17 21:10:03.490188,,,,,,,,,
+,,,,17,2025-10-17 21:13:16.979713,0.5072333216667175,0.0032975899521261454,0.5072333216667175,0.546735405921936,0.004115614574402571,0.546735405921936,,,
+,,,,17,2025-10-17 21:14:07.029197,,,,,,,0.5166626572608948,0.004241914954036474,0.5166626572608948
+0.503096342086792,0.002954531693831086,0.503096342086792,1049.0,18,2025-10-17 21:17:43.239126,,,,,,,,,
+,,,,18,2025-10-17 21:22:02.366480,0.4891848564147949,0.003920846618711948,0.4891848564147949,0.521676242351532,0.004159113857895136,0.521676242351532,,,
+,,,,18,2025-10-17 21:22:51.015238,,,,,,,0.4985333979129791,0.004320941865444183,0.4985333979129791
+0.47992178797721863,0.002379495417699218,0.47992178797721863,1099.0,19,2025-10-17 21:25:39.687664,,,,,,,,,
+,,,,19,2025-10-17 21:30:44.260245,0.4753892719745636,0.005953944753855467,0.4753892719745636,0.5112963914871216,0.005237895529717207,0.5112963914871216,,,
+,,,,19,2025-10-17 21:31:32.955861,,,,,,,0.4791320264339447,0.0039509558118879795,0.4791320264339447
+0.4572303891181946,0.0027849783655256033,0.4572303891181946,1149.0,20,2025-10-17 21:33:29.032531,,,,,,,,,
+0.4629071056842804,0.003879647934809327,0.4629071056842804,1199.0,20,2025-10-17 21:37:58.693782,,,,,,,,,
+,,,,20,2025-10-17 21:39:36.173475,0.453395813703537,0.005427689757198095,0.453395813703537,0.4854350984096527,0.0038980115205049515,0.4854350984096527,,,
+,,,,20,2025-10-17 21:40:25.377165,,,,,,,0.4624866545200348,0.0039069014601409435,0.4624866545200348
+0.44980332255363464,0.003607891732826829,0.44980332255363464,1249.0,21,2025-10-17 21:46:03.300107,,,,,,,,,
+,,,,21,2025-10-17 21:48:18.378354,0.43696728348731995,0.002635874319821596,0.43696728348731995,0.47823771834373474,0.004575494676828384,0.47823771834373474,,,
+,,,,21,2025-10-17 21:49:08.003355,,,,,,,0.44773417711257935,0.004178957082331181,0.44773417711257935
+0.4310632050037384,0.005498436279594898,0.4310632050037384,1299.0,22,2025-10-17 21:53:42.548677,,,,,,,,,
+,,,,22,2025-10-17 21:57:07.084140,0.42980021238327026,0.003612735541537404,0.42980021238327026,0.4649207293987274,0.004720674827694893,0.4649207293987274,,,
+,,,,22,2025-10-17 21:57:56.089297,,,,,,,0.4304196834564209,0.003874737536534667,0.4304196834564209
+0.41302117705345154,0.005146853160113096,0.41302117705345154,1349.0,23,2025-10-17 22:01:43.184383,,,,,,,,,
+,,,,23,2025-10-17 22:05:47.400327,0.408976674079895,0.0029195838142186403,0.408976674079895,0.44180431962013245,0.00392196886241436,0.44180431962013245,,,
+,,,,23,2025-10-17 22:06:38.086876,,,,,,,0.41530653834342957,0.004081227816641331,0.41530653834342957
+0.4097554385662079,0.002896635327488184,0.4097554385662079,1399.0,24,2025-10-17 22:09:34.782257,,,,,,,,,
+,,,,24,2025-10-17 22:14:51.556770,0.3964121639728546,0.003533917246386409,0.3964121639728546,0.4304462671279907,0.0038241418078541756,0.4304462671279907,,,
+,,,,24,2025-10-17 22:15:42.915790,,,,,,,0.4038150906562805,0.003966495394706726,0.4038150906562805
+0.382864773273468,0.003294428111985326,0.382864773273468,1449.0,25,2025-10-17 22:17:30.614336,,,,,,,,,
+0.3791220486164093,0.0029140342958271503,0.3791220486164093,1499.0,25,2025-10-17 22:22:01.870836,,,,,,,,,
+,,,,25,2025-10-17 22:23:36.207787,0.386807382106781,0.002678736811503768,0.386807382106781,0.42168956995010376,0.0029558539390563965,0.42168956995010376,,,
+,,,,25,2025-10-17 22:24:25.943970,,,,,,,0.38943976163864136,0.0035117133520543575,0.38943976163864136
+0.34903067350387573,0.0018004446756094694,0.34903067350387573,1549.0,26,2025-10-17 22:30:08.222875,,,,,,,,,
+,,,,26,2025-10-17 22:32:23.081963,0.3692779839038849,0.004333118442445993,0.3692779839038849,0.3969580829143524,0.002681219717487693,0.3969580829143524,,,
+,,,,26,2025-10-17 22:33:10.907709,,,,,,,0.37460044026374817,0.003322968492284417,0.37460044026374817
+0.3792068064212799,0.0025799707509577274,0.3792068064212799,1599.0,27,2025-10-17 22:38:36.140581,,,,,,,,,
+,,,,27,2025-10-17 22:41:47.875231,0.3664904832839966,0.003755882615223527,0.3664904832839966,0.3990291357040405,0.005394399166107178,0.3990291357040405,,,
+,,,,27,2025-10-17 22:42:35.986281,,,,,,,0.36610081791877747,0.0033288844861090183,0.36610081791877747
+0.3635040521621704,0.001960414694622159,0.3635040521621704,1649.0,28,2025-10-17 22:46:41.509840,,,,,,,,,
+,,,,28,2025-10-17 22:50:40.044330,0.34386715292930603,0.0035876671317964792,0.34386715292930603,0.3937179744243622,0.0037130694836378098,0.3937179744243622,,,
+,,,,28,2025-10-17 22:51:26.420771,,,,,,,0.35264599323272705,0.0037467204965651035,0.35264599323272705
+0.3515273332595825,0.0021676074247807264,0.3515273332595825,1699.0,29,2025-10-17 22:54:18.608688,,,,,,,,,
+,,,,29,2025-10-17 22:59:27.449428,0.34100061655044556,0.005927515681833029,0.34100061655044556,0.3756888806819916,0.0033827454317361116,0.3756888806819916,,,
+,,,,29,2025-10-17 23:00:15.042450,,,,,,,0.3451484739780426,0.0037844229955226183,0.3451484739780426
+0.3341149687767029,0.007573127746582031,0.3341149687767029,1749.0,30,2025-10-17 23:02:00.809298,,,,,,,,,
+0.32731330394744873,0.001929320627823472,0.32731330394744873,1799.0,30,2025-10-17 23:06:40.006029,,,,,,,,,
+,,,,30,2025-10-17 23:08:17.651024,0.33356910943984985,0.004304233472794294,0.33356910943984985,0.3592572808265686,0.0036002215929329395,0.3592572808265686,,,
+,,,,30,2025-10-17 23:09:04.396866,,,,,,,0.33485153317451477,0.0034702245611697435,0.33485153317451477
+0.32654300332069397,0.002166624180972576,0.32654300332069397,1849.0,31,2025-10-17 23:14:34.722691,,,,,,,,,
+,,,,31,2025-10-17 23:16:50.817293,0.32415682077407837,0.003588471096009016,0.32415682077407837,0.3498847186565399,0.0027094860561192036,0.3498847186565399,,,
+,,,,31,2025-10-17 23:17:37.930325,,,,,,,0.3234676420688629,0.003552105976268649,0.3234676420688629
+0.3023500442504883,0.002822065493091941,0.3023500442504883,1899.0,32,2025-10-17 23:22:34.927490,,,,,,,,,
+,,,,32,2025-10-17 23:25:47.579273,0.3126690685749054,0.0030091817025095224,0.3126690685749054,0.3404969871044159,0.0041397023014724255,0.3404969871044159,,,
+,,,,32,2025-10-17 23:26:38.066313,,,,,,,0.31168097257614136,0.002977407071739435,0.31168097257614136
+0.32428836822509766,0.004895636811852455,0.32428836822509766,1949.0,33,2025-10-17 23:30:53.391733,,,,,,,,,
+,,,,33,2025-10-17 23:35:05.714614,0.30154192447662354,0.001977927051484585,0.30154192447662354,0.33470097184181213,0.0036565535701811314,0.33470097184181213,,,
+,,,,33,2025-10-17 23:35:56.195080,,,,,,,0.3066472113132477,0.00381969241425395,0.3066472113132477
+0.29557037353515625,0.00493372930213809,0.29557037353515625,1999.0,34,2025-10-17 23:38:42.235300,,,,,,,,,
+,,,,34,2025-10-17 23:43:57.302674,0.2953920066356659,0.003770796349272132,0.2953920066356659,0.3238844573497772,0.003777656238526106,0.3238844573497772,,,
+,,,,34,2025-10-17 23:44:44.584122,,,,,,,0.2954370081424713,0.003151919227093458,0.2954370081424713
+0.26829198002815247,0.0014970245538279414,0.26829198002815247,2049.0,35,2025-10-17 23:46:36.447348,,,,,,,,,
+0.2776942551136017,0.0037280828692018986,0.2776942551136017,2099.0,35,2025-10-17 23:51:11.837798,,,,,,,,,
+,,,,35,2025-10-17 23:52:43.699651,0.28441211581230164,0.002015964360907674,0.28441211581230164,0.3192616105079651,0.0034252910409122705,0.3192616105079651,,,
+,,,,35,2025-10-17 23:53:31.450330,,,,,,,0.2883877754211426,0.003099359106272459,0.2883877754211426
+0.2721158266067505,0.0021113744005560875,0.2721158266067505,2149.0,36,2025-10-17 23:59:02.168494,,,,,,,,,
+,,,,36,2025-10-18 00:01:36.344066,0.28485387563705444,0.002576607745140791,0.28485387563705444,0.3031649887561798,0.002734854118898511,0.3031649887561798,,,
+,,,,36,2025-10-18 00:02:24.766705,,,,,,,0.2843502461910248,0.0030610847752541304,0.2843502461910248
+0.2409033477306366,0.0012487482745200396,0.2409033477306366,2199.0,37,2025-10-18 00:07:25.781291,,,,,,,,,
+,,,,37,2025-10-18 00:10:30.058484,0.27430400252342224,0.003992173820734024,0.27430400252342224,0.3031527101993561,0.0040612914599478245,0.3031527101993561,,,
+,,,,37,2025-10-18 00:11:16.184568,,,,,,,0.27718329429626465,0.0028162843082100153,0.27718329429626465
+0.2654839754104614,0.0025434221606701612,0.2654839754104614,2249.0,38,2025-10-18 00:15:26.930122,,,,,,,,,
+,,,,38,2025-10-18 00:19:45.120318,0.26039591431617737,0.00331642827950418,0.26039591431617737,0.30290815234184265,0.004527226090431213,0.30290815234184265,,,
+,,,,38,2025-10-18 00:20:34.773788,,,,,,,0.26838913559913635,0.00312285078689456,0.26838913559913635
+0.26765528321266174,0.0016706526512280107,0.26765528321266174,2299.0,39,2025-10-18 00:23:26.547325,,,,,,,,,
+,,,,39,2025-10-18 00:28:29.497746,0.2591611444950104,0.002573063364252448,0.2591611444950104,0.28724804520606995,0.0038741393946111202,0.28724804520606995,,,
+,,,,39,2025-10-18 00:29:16.139202,,,,,,,0.2609848082065582,0.0029091311153024435,0.2609848082065582
+0.28534996509552,0.00224576098844409,0.28534996509552,2349.0,40,2025-10-18 00:31:11.671601,,,,,,,,,
+0.25683802366256714,0.00661000981926918,0.25683802366256714,2399.0,40,2025-10-18 00:35:47.588068,,,,,,,,,
+,,,,40,2025-10-18 00:37:22.243530,0.26187077164649963,0.002219859743490815,0.26187077164649963,0.2800922989845276,0.0031639388762414455,0.2800922989845276,,,
+,,,,40,2025-10-18 00:38:10.022842,,,,,,,0.25934693217277527,0.002811690792441368,0.25934693217277527
+0.2475700080394745,0.0019128513522446156,0.2475700080394745,2449.0,41,2025-10-18 00:43:48.549745,,,,,,,,,
+,,,,41,2025-10-18 00:46:08.207809,0.2527816593647003,0.0030386534053832293,0.2527816593647003,0.27857691049575806,0.0028720730915665627,0.27857691049575806,,,
+,,,,41,2025-10-18 00:46:56.228032,,,,,,,0.25280851125717163,0.002966557629406452,0.25280851125717163
+0.26463744044303894,0.001976434141397476,0.26463744044303894,2499.0,42,2025-10-18 00:51:24.829470,,,,,,,,,
+,,,,42,2025-10-18 00:54:57.645291,0.24899165332317352,0.0026710976380854845,0.24899165332317352,0.2719288766384125,0.0036884902510792017,0.2719288766384125,,,
+,,,,42,2025-10-18 00:55:47.251960,,,,,,,0.24653959274291992,0.0030098771676421165,0.24653959274291992
+0.25619742274284363,0.0017166443867608905,0.25619742274284363,2549.0,43,2025-10-18 00:59:47.629520,,,,,,,,,
+,,,,43,2025-10-18 01:03:57.174691,0.2311849296092987,0.0022806718479841948,0.2311849296092987,0.2558221220970154,0.002931251423433423,0.2558221220970154,,,
+,,,,43,2025-10-18 01:04:45.056956,,,,,,,0.24646930396556854,0.0030814609490334988,0.24646930396556854
+0.23011654615402222,0.002300398424267769,0.23011654615402222,2599.0,44,2025-10-18 01:07:34.892438,,,,,,,,,
+,,,,44,2025-10-18 01:12:42.542352,0.23366762697696686,0.0037340379785746336,0.23366762697696686,0.2600926160812378,0.002657821634784341,0.2600926160812378,,,
+,,,,44,2025-10-18 01:13:29.072381,,,,,,,0.23790264129638672,0.002818418899551034,0.23790264129638672
+0.2085430920124054,0.0011553699150681496,0.2085430920124054,2649.0,45,2025-10-18 01:15:16.389796,,,,,,,,,
+0.2339380830526352,0.002164354082196951,0.2339380830526352,2699.0,45,2025-10-18 01:19:56.011406,,,,,,,,,
+,,,,45,2025-10-18 01:21:28.895609,0.22791318595409393,0.0032366332598030567,0.22791318595409393,0.2543962895870209,0.004943333100527525,0.2543962895870209,,,
+,,,,45,2025-10-18 01:22:17.920766,,,,,,,0.23490773141384125,0.002942646387964487,0.23490773141384125
+0.20419856905937195,0.002120305085554719,0.20419856905937195,2749.0,46,2025-10-18 01:27:54.254820,,,,,,,,,
+,,,,46,2025-10-18 01:30:36.987586,0.22863580286502838,0.0023775554727762938,0.22863580286502838,0.2525813579559326,0.003678364912047982,0.2525813579559326,,,
+,,,,46,2025-10-18 01:31:26.546137,,,,,,,0.23579438030719757,0.003084185067564249,0.23579438030719757
+0.2397492378950119,0.003231365466490388,0.2397492378950119,2799.0,47,2025-10-18 01:36:16.789467,,,,,,,,,
+,,,,47,2025-10-18 01:39:32.172120,0.22553294897079468,0.002304472029209137,0.22553294897079468,0.2425924390554428,0.003191049676388502,0.2425924390554428,,,
+,,,,47,2025-10-18 01:40:18.687607,,,,,,,0.2269117534160614,0.0022496876772493124,0.2269117534160614
+0.22617918252944946,0.001533633447252214,0.22617918252944946,2849.0,48,2025-10-18 01:43:57.592853,,,,,,,,,
+,,,,48,2025-10-18 01:48:10.520466,0.22463873028755188,0.002693468239158392,0.22463873028755188,0.2425769865512848,0.0030094843823462725,0.2425769865512848,,,
+,,,,48,2025-10-18 01:48:58.153973,,,,,,,0.22376298904418945,0.002933716867119074,0.22376298904418945
+0.22263701260089874,0.002054888755083084,0.22263701260089874,2899.0,49,2025-10-18 01:51:51.323613,,,,,,,,,
+,,,,49,2025-10-18 01:56:54.418576,0.2253531813621521,0.0031459773890674114,0.2253531813621521,0.23653548955917358,0.002540112938731909,0.23653548955917358,,,
+,,,,49,2025-10-18 01:57:44.105582,,,,,,,0.21911266446113586,0.0026613909285515547,0.21911266446113586
+0.2260802537202835,0.0016033801948651671,0.2260802537202835,2949.0,50,2025-10-18 01:59:33.259320,,,,,,,,,
+0.2042275071144104,0.003578661475330591,0.2042275071144104,2999.0,50,2025-10-18 02:03:58.325047,,,,,,,,,
+,,,,50,2025-10-18 02:05:28.926605,0.2184848040342331,0.002226481446996331,0.2184848040342331,0.24739760160446167,0.005558309610933065,0.24739760160446167,,,
+,,,,50,2025-10-18 02:05:53.887320,,,,,,,0.21693484485149384,0.002568315016105771,0.21693484485149384
+0.19587518274784088,0.002141018630936742,0.19587518274784088,3049.0,51,2025-10-18 02:11:36.699027,,,,,,,,,
+,,,,51,2025-10-18 02:14:01.642897,0.21990901231765747,0.0023338261526077986,0.21990901231765747,0.23628687858581543,0.003388708923012018,0.23628687858581543,,,
+,,,,51,2025-10-18 02:14:49.123187,,,,,,,0.21168223023414612,0.002821913454681635,0.21168223023414612
+0.20126816630363464,0.002694060793146491,0.20126816630363464,3099.0,52,2025-10-18 02:19:34.939051,,,,,,,,,
+,,,,52,2025-10-18 02:22:46.971841,0.20394255220890045,0.0020175473764538765,0.20394255220890045,0.2324499785900116,0.00332344276830554,0.2324499785900116,,,
+,,,,52,2025-10-18 02:23:32.742892,,,,,,,0.21086205542087555,0.0027179974131286144,0.21086205542087555
+0.18838943541049957,0.001227339613251388,0.18838943541049957,3149.0,53,2025-10-18 02:27:22.199475,,,,,,,,,
+,,,,53,2025-10-18 02:31:27.360806,0.21468542516231537,0.002323791617527604,0.21468542516231537,0.22346827387809753,0.0015940945595502853,0.22346827387809753,,,
+,,,,53,2025-10-18 02:32:15.831217,,,,,,,0.21157175302505493,0.0026095714420080185,0.21157175302505493
+0.19400274753570557,0.0014115491649135947,0.19400274753570557,3199.0,54,2025-10-18 02:35:14.391923,,,,,,,,,
+,,,,54,2025-10-18 02:40:23.010324,0.20748580992221832,0.003353619482368231,0.20748580992221832,0.23138855397701263,0.0036053545773029327,0.23138855397701263,,,
+,,,,54,2025-10-18 02:41:14.332008,,,,,,,0.20991545915603638,0.0026832830626517534,0.20991545915603638
+0.21961307525634766,0.0018315702909603715,0.21961307525634766,3249.0,55,2025-10-18 02:43:10.138665,,,,,,,,,
+0.19133761525154114,0.004516351968050003,0.19133761525154114,3299.0,55,2025-10-18 02:48:01.117334,,,,,,,,,
+,,,,55,2025-10-18 02:49:39.250326,0.20393820106983185,0.0024540647864341736,0.20393820106983185,0.23059718310832977,0.003420991823077202,0.23059718310832977,,,
+,,,,55,2025-10-18 02:50:27.929264,,,,,,,0.19995525479316711,0.002466990612447262,0.19995525479316711
+0.20864547789096832,0.002874532947316766,0.20864547789096832,3349.0,56,2025-10-18 02:56:28.225052,,,,,,,,,
+,,,,56,2025-10-18 02:58:39.856564,0.21072763204574585,0.004693142604082823,0.21072763204574585,0.22091583907604218,0.0027561821043491364,0.22091583907604218,,,
+,,,,56,2025-10-18 02:59:28.088064,,,,,,,0.20341017842292786,0.002722575096413493,0.20341017842292786
+0.2086683213710785,0.004920510575175285,0.2086683213710785,3399.0,57,2025-10-18 03:04:02.716283,,,,,,,,,
+,,,,57,2025-10-18 03:07:13.379506,0.20123140513896942,0.002911006798967719,0.20123140513896942,0.2122715264558792,0.0014843312092125416,0.2122715264558792,,,
+,,,,57,2025-10-18 03:08:01.133619,,,,,,,0.20059256255626678,0.002329669427126646,0.20059256255626678
+0.1638718694448471,0.0015461884904652834,0.1638718694448471,3449.0,58,2025-10-18 03:11:58.225489,,,,,,,,,
+,,,,58,2025-10-18 03:16:03.566208,0.2092512845993042,0.0045948210172355175,0.2092512845993042,0.2200208306312561,0.0032472661696374416,0.2200208306312561,,,
+,,,,58,2025-10-18 03:16:50.771005,,,,,,,0.20426523685455322,0.002570732496678829,0.20426523685455322
+0.22431856393814087,0.003420562483370304,0.22431856393814087,3499.0,59,2025-10-18 03:19:44.076793,,,,,,,,,
+,,,,59,2025-10-18 03:24:58.859714,0.2097751349210739,0.003889271290972829,0.2097751349210739,0.21695546805858612,0.002505337353795767,0.21695546805858612,,,
+,,,,59,2025-10-18 03:25:46.331892,,,,,,,0.19871419668197632,0.0029760163743048906,0.19871419668197632
+0.2060558944940567,0.0030032387003302574,0.2060558944940567,3549.0,60,2025-10-18 03:28:09.622252,,,,,,,,,
+0.18881194293498993,0.0016044782241806388,0.18881194293498993,3599.0,60,2025-10-18 03:32:58.489104,,,,,,,,,
+,,,,60,2025-10-18 03:34:33.901023,0.19915664196014404,0.0024078881833702326,0.19915664196014404,0.21274308860301971,0.003825064515694976,0.21274308860301971,,,
+,,,,60,2025-10-18 03:35:22.197109,,,,,,,0.19572243094444275,0.002528023673221469,0.19572243094444275
+0.1970432549715042,0.00670558912679553,0.1970432549715042,3649.0,61,2025-10-18 03:40:55.154748,,,,,,,,,
+,,,,61,2025-10-18 03:43:17.777695,0.20161788165569305,0.0022182303946465254,0.20161788165569305,0.21268285810947418,0.0034407407511025667,0.21268285810947418,,,
+,,,,61,2025-10-18 03:44:05.930498,,,,,,,0.19757072627544403,0.0029988097958266735,0.19757072627544403
+0.19559933245182037,0.0016825678758323193,0.19559933245182037,3699.0,62,2025-10-18 03:48:42.772001,,,,,,,,,
+,,,,62,2025-10-18 03:51:53.432382,0.1969473510980606,0.001929719583131373,0.1969473510980606,0.2005879133939743,0.0020736639853566885,0.2005879133939743,,,
+,,,,62,2025-10-18 03:52:39.119927,,,,,,,0.1945025473833084,0.0027116169221699238,0.1945025473833084
+0.21821340918540955,0.0016223626444116235,0.21821340918540955,3749.0,63,2025-10-18 03:56:53.375713,,,,,,,,,
+,,,,63,2025-10-18 04:01:11.929275,0.1945328414440155,0.003689614124596119,0.1945328414440155,0.19780568778514862,0.002111197216436267,0.19780568778514862,,,
+,,,,63,2025-10-18 04:02:00.300637,,,,,,,0.19628000259399414,0.002781738992780447,0.19628000259399414
+0.18040065467357635,0.0014701607869938016,0.18040065467357635,3799.0,64,2025-10-18 04:05:02.409048,,,,,,,,,
+,,,,64,2025-10-18 04:10:32.350981,0.19093982875347137,0.001624290132895112,0.19093982875347137,0.1960717737674713,0.0016163501422852278,0.1960717737674713,,,
+,,,,64,2025-10-18 04:11:23.388993,,,,,,,0.19527177512645721,0.002934400225058198,0.19527177512645721
+0.20528748631477356,0.004243097268044949,0.20528748631477356,3849.0,65,2025-10-18 04:13:07.586862,,,,,,,,,
+0.16542589664459229,0.0015278103528544307,0.16542589664459229,3899.0,65,2025-10-18 04:17:44.783930,,,,,,,,,
+,,,,65,2025-10-18 04:19:17.790553,0.20256200432777405,0.002777962014079094,0.20256200432777405,0.20737303793430328,0.0031209352891892195,0.20737303793430328,,,
+,,,,65,2025-10-18 04:19:43.268806,,,,,,,0.1924688071012497,0.002572109689936042,0.1924688071012497
+0.18781942129135132,0.001040334696881473,0.18781942129135132,3949.0,66,2025-10-18 04:25:18.614444,,,,,,,,,
+,,,,66,2025-10-18 04:27:37.002306,0.1963997334241867,0.0023340112529695034,0.1963997334241867,0.20425106585025787,0.002198680303990841,0.20425106585025787,,,
+,,,,66,2025-10-18 04:28:03.112947,,,,,,,0.1919473260641098,0.0026504569686949253,0.1919473260641098
+0.2102022022008896,0.004406019113957882,0.2102022022008896,3999.0,67,2025-10-18 04:32:52.635987,,,,,,,,,
+,,,,67,2025-10-18 04:35:56.901561,0.19694846868515015,0.001999082276597619,0.19694846868515015,0.20403508841991425,0.0022090086713433266,0.20403508841991425,,,
+,,,,67,2025-10-18 04:36:21.903480,,,,,,,0.19044539332389832,0.0024281495716422796,0.19044539332389832
+0.1868588775396347,0.0009994113352149725,0.1868588775396347,4049.0,68,2025-10-18 04:40:08.009617,,,,,,,,,
+,,,,68,2025-10-18 04:44:13.773064,0.1856953650712967,0.00212055048905313,0.1856953650712967,0.19324658811092377,0.002152994042262435,0.19324658811092377,,,
+,,,,68,2025-10-18 04:45:01.997576,,,,,,,0.18771237134933472,0.002692437032237649,0.18771237134933472
+0.18510140478610992,0.0013438165187835693,0.18510140478610992,4099.0,69,2025-10-18 04:47:41.677260,,,,,,,,,
+,,,,69,2025-10-18 04:53:22.391277,0.18658432364463806,0.0018662954680621624,0.18658432364463806,0.2025790512561798,0.0016743239248171449,0.2025790512561798,,,
+,,,,69,2025-10-18 04:53:48.781272,,,,,,,0.19340920448303223,0.0026264230255037546,0.19340920448303223
+0.17326697707176208,0.0010817676084116101,0.17326697707176208,4149.0,70,2025-10-18 04:55:29.728989,,,,,,,,,
+0.17491793632507324,0.002353440271690488,0.17491793632507324,4199.0,70,2025-10-18 05:00:34.776058,,,,,,,,,
+,,,,70,2025-10-18 05:02:11.384036,0.19130699336528778,0.001773655298165977,0.19130699336528778,0.18616366386413574,0.002554301405325532,0.18616366386413574,,,
+,,,,70,2025-10-18 05:03:02.074855,,,,,,,0.19114439189434052,0.002894744509831071,0.19114439189434052
+0.19811885058879852,0.004161306656897068,0.19811885058879852,4249.0,71,2025-10-18 05:08:41.196638,,,,,,,,,
+,,,,71,2025-10-18 05:10:55.062628,0.19756639003753662,0.002364070387557149,0.19756639003753662,0.19493937492370605,0.004136176314204931,0.19493937492370605,,,
+,,,,71,2025-10-18 05:11:44.969355,,,,,,,0.18775351345539093,0.002598716877400875,0.18775351345539093
+0.16312317550182343,0.0012205889215692878,0.16312317550182343,4299.0,72,2025-10-18 05:16:27.471676,,,,,,,,,
+,,,,72,2025-10-18 05:19:45.037830,0.18289251625537872,0.0015096567803993821,0.18289251625537872,0.19469867646694183,0.0024184321518987417,0.19469867646694183,,,
+,,,,72,2025-10-18 05:20:35.370498,,,,,,,0.185288667678833,0.002429485786706209,0.185288667678833
+0.1493738442659378,0.001195352990180254,0.1493738442659378,4349.0,73,2025-10-18 05:24:41.754819,,,,,,,,,
+,,,,73,2025-10-18 05:28:55.705715,0.18632923066616058,0.002633278025314212,0.18632923066616058,0.19686782360076904,0.0030632202979177237,0.19686782360076904,,,
+,,,,73,2025-10-18 05:29:21.634595,,,,,,,0.18819287419319153,0.002577962586656213,0.18819287419319153
+0.20945720374584198,0.004527183249592781,0.20945720374584198,4399.0,74,2025-10-18 05:32:13.123254,,,,,,,,,
+,,,,74,2025-10-18 05:37:42.304167,0.1936260312795639,0.0037772529758512974,0.1936260312795639,0.18864475190639496,0.0032450491562485695,0.18864475190639496,,,
+,,,,74,2025-10-18 05:38:31.970783,,,,,,,0.1911189705133438,0.0025617782957851887,0.1911189705133438
+0.20437519252300262,0.004011299926787615,0.20437519252300262,4449.0,75,2025-10-18 05:40:21.533071,,,,,,,,,
+0.16471369564533234,0.0015785167925059795,0.16471369564533234,4499.0,75,2025-10-18 05:44:51.208096,,,,,,,,,
+,,,,75,2025-10-18 05:46:26.687654,0.18515098094940186,0.00235356786288321,0.18515098094940186,0.1932467520236969,0.0032488303259015083,0.1932467520236969,,,
+,,,,75,2025-10-18 05:46:53.135651,,,,,,,0.18567782640457153,0.0026197016704827547,0.18567782640457153
+0.18382538855075836,0.0033964384347200394,0.18382538855075836,4549.0,76,2025-10-18 05:52:20.789409,,,,,,,,,
+,,,,76,2025-10-18 05:54:35.727041,0.18125410377979279,0.0036767793353646994,0.18125410377979279,0.18015478551387787,0.002569057047367096,0.18015478551387787,,,
+,,,,76,2025-10-18 05:55:27.299709,,,,,,,0.18520772457122803,0.0024684430100023746,0.18520772457122803
+0.20149452984333038,0.004407274071127176,0.20149452984333038,4599.0,77,2025-10-18 06:00:15.887270,,,,,,,,,
+,,,,77,2025-10-18 06:03:17.228466,0.175491601228714,0.002817924600094557,0.175491601228714,0.18717089295387268,0.0024689428973942995,0.18717089295387268,,,
+,,,,77,2025-10-18 06:04:07.844878,,,,,,,0.18560312688350677,0.0025352423544973135,0.18560312688350677
+0.21743783354759216,0.00543285021558404,0.21743783354759216,4649.0,78,2025-10-18 06:08:03.216530,,,,,,,,,
+,,,,78,2025-10-18 06:11:55.524289,0.17655576765537262,0.0025818387512117624,0.17655576765537262,0.1917823851108551,0.0023716844152659178,0.1917823851108551,,,
+,,,,78,2025-10-18 06:12:21.695373,,,,,,,0.18426556885242462,0.002437929855659604,0.18426556885242462
+0.19944483041763306,0.006392173934727907,0.19944483041763306,4699.0,79,2025-10-18 06:15:08.436179,,,,,,,,,
+,,,,79,2025-10-18 06:20:21.869540,0.1686936318874359,0.0023284514900296926,0.1686936318874359,0.18027961254119873,0.0027430024929344654,0.18027961254119873,,,
+,,,,79,2025-10-18 06:21:12.499023,,,,,,,0.1806134283542633,0.002530767349526286,0.1806134283542633
+0.20598258078098297,0.004284437280148268,0.20598258078098297,4749.0,80,2025-10-18 06:22:55.606274,,,,,,,,,
+0.1732981652021408,0.0042785415425896645,0.1732981652021408,4799.0,80,2025-10-18 06:28:07.345441,,,,,,,,,
+,,,,80,2025-10-18 06:29:43.127047,0.18031397461891174,0.003705056617036462,0.18031397461891174,0.19116835296154022,0.0032082891557365656,0.19116835296154022,,,
+,,,,80,2025-10-18 06:30:09.569262,,,,,,,0.18657496571540833,0.0025408086366951466,0.18657496571540833
+0.18683169782161713,0.0053628128953278065,0.18683169782161713,4849.0,81,2025-10-18 06:35:48.124480,,,,,,,,,
+,,,,81,2025-10-18 06:38:01.785133,0.17645175755023956,0.00272378115914762,0.17645175755023956,0.1851380467414856,0.003693275386467576,0.1851380467414856,,,
+,,,,81,2025-10-18 06:38:49.791439,,,,,,,0.18139024078845978,0.0023522113915532827,0.18139024078845978
+0.20253896713256836,0.0016025828663259745,0.20253896713256836,4899.0,82,2025-10-18 06:43:42.573646,,,,,,,,,
+,,,,82,2025-10-18 06:47:04.937349,0.1917484551668167,0.003423494752496481,0.1917484551668167,0.1806086301803589,0.002570789773017168,0.1806086301803589,,,
+,,,,82,2025-10-18 06:47:55.007085,,,,,,,0.18341965973377228,0.002405470469966531,0.18341965973377228
+0.2080352008342743,0.0017673297552391887,0.2080352008342743,4949.0,83,2025-10-18 06:51:39.412073,,,,,,,,,
+,,,,83,2025-10-18 06:55:55.765631,0.17480282485485077,0.0014565266901627183,0.17480282485485077,0.18201352655887604,0.003166571957990527,0.18201352655887604,,,
+,,,,83,2025-10-18 06:56:21.388816,,,,,,,0.17735038697719574,0.0022337394766509533,0.17735038697719574
+0.2101706862449646,0.002667537657544017,0.2101706862449646,4999.0,84,2025-10-18 06:59:10.742883,,,,,,,,,
+,,,,84,2025-10-18 07:04:19.439763,0.1720127910375595,0.0023882926907390356,0.1720127910375595,0.18660059571266174,0.003059469163417816,0.18660059571266174,,,
+,,,,84,2025-10-18 07:04:46.335430,,,,,,,0.18224850296974182,0.002788908313959837,0.18224850296974182
+0.1698320060968399,0.0011939345858991146,0.1698320060968399,5049.0,85,2025-10-18 07:06:36.640655,,,,,,,,,
+0.15668515861034393,0.003209889866411686,0.15668515861034393,5099.0,85,2025-10-18 07:11:25.991816,,,,,,,,,
+,,,,85,2025-10-18 07:13:00.795396,0.18343742191791534,0.002341214567422867,0.18343742191791534,0.19996778666973114,0.0036484457086771727,0.19996778666973114,,,
+,,,,85,2025-10-18 07:13:27.392694,,,,,,,0.1808822602033615,0.0027392932679504156,0.1808822602033615
+0.177274689078331,0.0014107093447819352,0.177274689078331,5149.0,86,2025-10-18 07:19:10.500931,,,,,,,,,
+,,,,86,2025-10-18 07:21:47.951378,0.18336796760559082,0.00318700703792274,0.18336796760559082,0.18324892222881317,0.0017883412074297667,0.18324892222881317,,,
+,,,,86,2025-10-18 07:22:13.710215,,,,,,,0.17798539996147156,0.0023747230879962444,0.17798539996147156
+0.196222186088562,0.0015584399225190282,0.196222186088562,5199.0,87,2025-10-18 07:26:57.110942,,,,,,,,,
+,,,,87,2025-10-18 07:30:10.176674,0.18179269134998322,0.003373428015038371,0.18179269134998322,0.17732024192810059,0.0021609789691865444,0.17732024192810059,,,
+,,,,87,2025-10-18 07:31:00.627550,,,,,,,0.18476688861846924,0.0023912901524454355,0.18476688861846924
+0.1554459035396576,0.0011493558995425701,0.1554459035396576,5249.0,88,2025-10-18 07:34:51.987243,,,,,,,,,
+,,,,88,2025-10-18 07:39:08.803570,0.1843545138835907,0.0038612759672105312,0.1843545138835907,0.18191345036029816,0.0024607095401734114,0.18191345036029816,,,
+,,,,88,2025-10-18 07:39:36.799018,,,,,,,0.1806844025850296,0.0025544629897922277,0.1806844025850296
+0.153298020362854,0.0012430265778675675,0.153298020362854,5299.0,89,2025-10-18 07:42:29.119928,,,,,,,,,
+,,,,89,2025-10-18 07:47:38.495783,0.1802721470594406,0.0015729917213320732,0.1802721470594406,0.19310085475444794,0.003749428316950798,0.19310085475444794,,,
+,,,,89,2025-10-18 07:48:03.508794,,,,,,,0.17652373015880585,0.0027389887254685163,0.17652373015880585
+0.22373123466968536,0.003251126268878579,0.22373123466968536,5349.0,90,2025-10-18 07:49:52.504968,,,,,,,,,
+0.1593894362449646,0.0037713204510509968,0.1593894362449646,5399.0,90,2025-10-18 07:54:35.251648,,,,,,,,,
+,,,,90,2025-10-18 07:56:09.359331,0.17252539098262787,0.0018146161455661058,0.17252539098262787,0.19305123388767242,0.002809744793921709,0.19305123388767242,,,
+,,,,90,2025-10-18 07:56:36.132741,,,,,,,0.18063762784004211,0.002593464683741331,0.18063762784004211
+0.16924966871738434,0.0011165793985128403,0.16924966871738434,5449.0,91,2025-10-18 08:02:43.039500,,,,,,,,,
+,,,,91,2025-10-18 08:04:56.424643,0.16332626342773438,0.001471026218496263,0.16332626342773438,0.17951533198356628,0.0012712122406810522,0.17951533198356628,,,
+,,,,91,2025-10-18 08:05:47.566748,,,,,,,0.17375291883945465,0.002019150648266077,0.17375291883945465
+0.19832336902618408,0.0020403098315000534,0.19832336902618408,5499.0,92,2025-10-18 08:10:27.746576,,,,,,,,,
+,,,,92,2025-10-18 08:14:01.391984,0.1717744618654251,0.0018647292163223028,0.1717744618654251,0.18355309963226318,0.0020729016978293657,0.18355309963226318,,,
+,,,,92,2025-10-18 08:14:27.756604,,,,,,,0.17835327982902527,0.002543508308008313,0.17835327982902527
+0.1797863245010376,0.002311095129698515,0.1797863245010376,5549.0,93,2025-10-18 08:18:21.848990,,,,,,,,,
+,,,,93,2025-10-18 08:22:27.147296,0.17713458836078644,0.003995425999164581,0.17713458836078644,0.17992019653320312,0.002814964856952429,0.17992019653320312,,,
+,,,,93,2025-10-18 08:23:15.615723,,,,,,,0.17966312170028687,0.0023665798362344503,0.17966312170028687
+0.16845905780792236,0.0016502956859767437,0.16845905780792236,5599.0,94,2025-10-18 08:26:18.408073,,,,,,,,,
+,,,,94,2025-10-18 08:31:18.451360,0.17856675386428833,0.0035357442684471607,0.17856675386428833,0.19165387749671936,0.0030843077693134546,0.19165387749671936,,,
+,,,,94,2025-10-18 08:31:44.781734,,,,,,,0.17780251801013947,0.0026183186564594507,0.17780251801013947
+0.17773810029029846,0.004060032311826944,0.17773810029029846,5649.0,95,2025-10-18 08:33:39.710146,,,,,,,,,
+0.1671465039253235,0.0010988867143169045,0.1671465039253235,5699.0,95,2025-10-18 08:38:07.576148,,,,,,,,,
+,,,,95,2025-10-18 08:39:44.433016,0.16989147663116455,0.0012784198625013232,0.16989147663116455,0.18053166568279266,0.002395572606474161,0.18053166568279266,,,
+,,,,95,2025-10-18 08:40:10.486595,,,,,,,0.17961160838603973,0.0024606974329799414,0.17961160838603973
+0.17619146406650543,0.0016579540679231286,0.17619146406650543,5749.0,96,2025-10-18 08:45:54.770266,,,,,,,,,
+,,,,96,2025-10-18 08:48:07.206470,0.17711393535137177,0.003208527574315667,0.17711393535137177,0.17124444246292114,0.0020712020341306925,0.17124444246292114,,,
+,,,,96,2025-10-18 08:48:55.124104,,,,,,,0.17568327486515045,0.002450915751978755,0.17568327486515045
+0.18246321380138397,0.0014010871527716517,0.18246321380138397,5799.0,97,2025-10-18 08:53:50.755117,,,,,,,,,
+,,,,97,2025-10-18 08:57:02.643997,0.18292438983917236,0.0025653394404798746,0.18292438983917236,0.18542182445526123,0.002706291386857629,0.18542182445526123,,,
+,,,,97,2025-10-18 08:57:29.224278,,,,,,,0.1762818545103073,0.002168842125684023,0.1762818545103073
+0.18585479259490967,0.002605630550533533,0.18585479259490967,5849.0,98,2025-10-18 09:01:23.726737,,,,,,,,,
+,,,,98,2025-10-18 09:05:38.559739,0.1839010864496231,0.002164872596040368,0.1839010864496231,0.18755683302879333,0.002614654367789626,0.18755683302879333,,,
+,,,,98,2025-10-18 09:06:05.983640,,,,,,,0.17731009423732758,0.0026351872365921736,0.17731009423732758
+0.17623157799243927,0.003666551550850272,0.17623157799243927,5899.0,99,2025-10-18 09:09:00.556746,,,,,,,,,
+,,,,99,2025-10-18 09:14:21.053045,0.1879875659942627,0.003576797666028142,0.1879875659942627,0.17991013824939728,0.0017473739571869373,0.17991013824939728,,,
+,,,,99,2025-10-18 09:14:47.711544,,,,,,,0.17612342536449432,0.0024689713027328253,0.17612342536449432
+0.1805044412612915,0.005968304350972176,0.1805044412612915,5949.0,100,2025-10-18 09:16:42.188915,,,,,,,,,
+0.17047424614429474,0.001277106930501759,0.17047424614429474,5999.0,100,2025-10-18 09:21:04.014293,,,,,,,,,
+,,,,100,2025-10-18 09:22:35.673619,0.18516108393669128,0.0029795714654028416,0.18516108393669128,0.17676395177841187,0.002453140914440155,0.17676395177841187,,,
+,,,,100,2025-10-18 09:23:25.831220,,,,,,,0.17648904025554657,0.002569828648120165,0.17648904025554657
+0.1783033013343811,0.0012169088004156947,0.1783033013343811,6049.0,101,2025-10-18 09:29:17.580192,,,,,,,,,
+,,,,101,2025-10-18 09:31:29.769583,0.18405188620090485,0.002314919838681817,0.18405188620090485,0.17661252617835999,0.0014374902239069343,0.17661252617835999,,,
+,,,,101,2025-10-18 09:32:20.791682,,,,,,,0.17698870599269867,0.002425799611955881,0.17698870599269867
+0.1974811553955078,0.004126871936023235,0.1974811553955078,6099.0,102,2025-10-18 09:37:09.680367,,,,,,,,,
+,,,,102,2025-10-18 09:40:29.372696,0.17857052385807037,0.002289524534717202,0.17857052385807037,0.18090634047985077,0.0026479107327759266,0.18090634047985077,,,
+,,,,102,2025-10-18 09:40:56.207373,,,,,,,0.18060828745365143,0.0028030388057231903,0.18060828745365143
+0.18207214772701263,0.0012188531691208482,0.18207214772701263,6149.0,103,2025-10-18 09:44:49.065940,,,,,,,,,
+,,,,103,2025-10-18 09:49:07.155311,0.16932916641235352,0.002481185831129551,0.16932916641235352,0.1749330759048462,0.002627013251185417,0.1749330759048462,,,
+,,,,103,2025-10-18 09:55:52.528456,,,,,,,0.17521658539772034,0.0024940099101513624,0.17521658539772034
+0.18633468449115753,0.004846561700105667,0.18633468449115753,6199.0,104,2025-10-18 09:58:38.279126,,,,,,,,,
+,,,,104,2025-10-18 10:03:47.432999,0.1748490184545517,0.0028746076859533787,0.1748490184545517,0.18405644595623016,0.0025815211702138186,0.18405644595623016,,,
+,,,,104,2025-10-18 10:04:14.417865,,,,,,,0.17498615384101868,0.0023632454685866833,0.17498615384101868
+0.1773466020822525,0.001143951085396111,0.1773466020822525,6249.0,105,2025-10-18 10:06:08.995897,,,,,,,,,
+0.19046519696712494,0.0013286569155752659,0.19046519696712494,6299.0,105,2025-10-18 10:11:04.831325,,,,,,,,,
+,,,,105,2025-10-18 10:12:38.050834,0.1829911768436432,0.0023360238410532475,0.1829911768436432,0.1823187619447708,0.001771946088410914,0.1823187619447708,,,
+,,,,105,2025-10-18 10:13:05.386033,,,,,,,0.17538046836853027,0.002522313967347145,0.17538046836853027
+0.15407170355319977,0.005277747754007578,0.15407170355319977,6349.0,106,2025-10-18 10:18:52.022319,,,,,,,,,
+,,,,106,2025-10-18 10:21:08.033689,0.1654454618692398,0.002876153215765953,0.1654454618692398,0.18762068450450897,0.002570732031017542,0.18762068450450897,,,
+,,,,106,2025-10-18 10:21:34.167626,,,,,,,0.17258858680725098,0.0023799759801477194,0.17258858680725098
+0.1923709511756897,0.0026607264298945665,0.1923709511756897,6399.0,107,2025-10-18 10:26:33.188523,,,,,,,,,
+,,,,107,2025-10-18 10:29:48.734338,0.17419452965259552,0.0022990424185991287,0.17419452965259552,0.18374621868133545,0.0016591151943430305,0.18374621868133545,,,
+,,,,107,2025-10-18 10:30:13.952063,,,,,,,0.17369087040424347,0.0023409731220453978,0.17369087040424347
+0.16753670573234558,0.001375705935060978,0.16753670573234558,6449.0,108,2025-10-18 10:34:07.520846,,,,,,,,,
+,,,,108,2025-10-18 10:38:11.178019,0.18394556641578674,0.0026317283045500517,0.18394556641578674,0.17505113780498505,0.0021565731149166822,0.17505113780498505,,,
+,,,,108,2025-10-18 10:39:00.052126,,,,,,,0.17263810336589813,0.0025550860445946455,0.17263810336589813
+0.15126565098762512,0.0010071357246488333,0.15126565098762512,6499.0,109,2025-10-18 10:41:58.683028,,,,,,,,,
+,,,,109,2025-10-18 10:48:20.502582,0.17484167218208313,0.004107159096747637,0.17484167218208313,0.17438800632953644,0.0032225782051682472,0.17438800632953644,,,
+,,,,109,2025-10-18 10:49:10.504822,,,,,,,0.17358839511871338,0.002452238230034709,0.17358839511871338
+0.17564909160137177,0.0035945356357842684,0.17564909160137177,6549.0,110,2025-10-18 10:50:58.780656,,,,,,,,,
+0.1639041304588318,0.0015673087909817696,0.1639041304588318,6599.0,110,2025-10-18 10:55:33.746214,,,,,,,,,
+,,,,110,2025-10-18 10:57:12.685632,0.1741992086172104,0.0016357743879780173,0.1741992086172104,0.16892419755458832,0.0018792655318975449,0.16892419755458832,,,
+,,,,110,2025-10-18 10:58:01.120158,,,,,,,0.17121826112270355,0.002193381544202566,0.17121826112270355
+0.16612879931926727,0.001206984743475914,0.16612879931926727,6649.0,111,2025-10-18 11:03:46.718839,,,,,,,,,
+,,,,111,2025-10-18 11:06:01.481756,0.16160066425800323,0.002661467995494604,0.16160066425800323,0.18038605153560638,0.0021932250820100307,0.18038605153560638,,,
+,,,,111,2025-10-18 11:06:28.953782,,,,,,,0.1763359010219574,0.0025903487112373114,0.1763359010219574
+0.1762801855802536,0.0013615116477012634,0.1762801855802536,6699.0,112,2025-10-18 11:10:55.075041,,,,,,,,,
+,,,,112,2025-10-18 11:14:23.483130,0.17138171195983887,0.0025363052263855934,0.17138171195983887,0.18420575559139252,0.0024249416310340166,0.18420575559139252,,,
+,,,,112,2025-10-18 11:14:50.278860,,,,,,,0.1742706149816513,0.002519201021641493,0.1742706149816513
+0.16278719902038574,0.001543886144645512,0.16278719902038574,6749.0,113,2025-10-18 11:18:42.075946,,,,,,,,,
+,,,,113,2025-10-18 11:23:30.115268,0.17829197645187378,0.0015082915779203176,0.17829197645187378,0.18738003075122833,0.0033843384589999914,0.18738003075122833,,,
+,,,,113,2025-10-18 11:23:55.433553,,,,,,,0.17080558836460114,0.002371022244915366,0.17080558836460114
+0.2041165977716446,0.0015238416381180286,0.2041165977716446,6799.0,114,2025-10-18 11:27:09.642855,,,,,,,,,
+,,,,114,2025-10-18 11:31:58.491871,0.17893154919147491,0.0038403146900236607,0.17893154919147491,0.17192517220973969,0.0034335050731897354,0.17192517220973969,,,
+,,,,114,2025-10-18 11:32:48.289042,,,,,,,0.17211444675922394,0.0022412030957639217,0.17211444675922394
+0.17170065641403198,0.0014765487285330892,0.17170065641403198,6849.0,115,2025-10-18 11:34:36.274137,,,,,,,,,
+0.17514397203922272,0.0026930368039757013,0.17514397203922272,6899.0,115,2025-10-18 11:38:54.809178,,,,,,,,,
+,,,,115,2025-10-18 11:40:31.777255,0.18204158544540405,0.0018860404379665852,0.18204158544540405,0.17897535860538483,0.003398734610527754,0.17897535860538483,,,
+,,,,115,2025-10-18 11:40:58.820449,,,,,,,0.17177370190620422,0.0027314152102917433,0.17177370190620422
+0.16638854146003723,0.0050869295373559,0.16638854146003723,6949.0,116,2025-10-18 11:47:09.489682,,,,,,,,,
+,,,,116,2025-10-18 11:49:22.453644,0.15861719846725464,0.0014020303497090936,0.15861719846725464,0.17157679796218872,0.002218849491328001,0.17157679796218872,,,
+,,,,116,2025-10-18 11:50:14.050629,,,,,,,0.16946446895599365,0.0022948049008846283,0.16946446895599365
+0.17118790745735168,0.0024756111670285463,0.17118790745735168,6999.0,117,2025-10-18 11:54:57.620061,,,,,,,,,
+,,,,117,2025-10-18 11:58:12.926143,0.17102721333503723,0.0018427062314003706,0.17102721333503723,0.17322663962841034,0.001796266995370388,0.17322663962841034,,,
+,,,,117,2025-10-18 11:58:38.514255,,,,,,,0.1715303212404251,0.0026813384611159563,0.1715303212404251
+0.15647916495800018,0.001232801703736186,0.15647916495800018,7049.0,118,2025-10-18 12:02:34.553159,,,,,,,,,
+,,,,118,2025-10-18 12:06:48.110227,0.1758507937192917,0.002102993428707123,0.1758507937192917,0.16941022872924805,0.0018821354024112225,0.16941022872924805,,,
+,,,,118,2025-10-18 12:07:37.627630,,,,,,,0.1689211130142212,0.0021793111227452755,0.1689211130142212
+0.1901557892560959,0.0024711203295737505,0.1901557892560959,7099.0,119,2025-10-18 12:10:32.433714,,,,,,,,,
+,,,,119,2025-10-18 12:15:50.851330,0.180788055062294,0.002413488458842039,0.180788055062294,0.17366500198841095,0.0024850217159837484,0.17366500198841095,,,
+,,,,119,2025-10-18 12:16:17.712084,,,,,,,0.17172786593437195,0.002421002835035324,0.17172786593437195
+0.18710234761238098,0.0012440060963854194,0.18710234761238098,7149.0,120,2025-10-18 12:18:08.276822,,,,,,,,,
+0.19569838047027588,0.005368697922676802,0.19569838047027588,7199.0,120,2025-10-18 12:22:52.346156,,,,,,,,,
+,,,,120,2025-10-18 12:24:31.539224,0.17546704411506653,0.0017182828160002828,0.17546704411506653,0.18216823041439056,0.0023424546234309673,0.18216823041439056,,,
+,,,,120,2025-10-18 12:24:58.256853,,,,,,,0.17274795472621918,0.0022482224740087986,0.17274795472621918
+0.17331336438655853,0.0030380163807421923,0.17331336438655853,7249.0,121,2025-10-18 12:30:59.224130,,,,,,,,,
+,,,,121,2025-10-18 12:33:13.969089,0.16912756860256195,0.002241648267954588,0.16912756860256195,0.18245260417461395,0.0030680582858622074,0.18245260417461395,,,
+,,,,121,2025-10-18 12:33:41.016486,,,,,,,0.1682157963514328,0.002576251048594713,0.1682157963514328
+0.20290511846542358,0.006192746572196484,0.20290511846542358,7299.0,122,2025-10-18 12:38:09.529585,,,,,,,,,
+,,,,122,2025-10-18 12:41:32.603803,0.17242291569709778,0.0029262497555464506,0.17242291569709778,0.17693749070167542,0.003419149201363325,0.17693749070167542,,,
+,,,,122,2025-10-18 12:42:01.143018,,,,,,,0.17146463692188263,0.002454679226502776,0.17146463692188263
+0.16030476987361908,0.0019367762142792344,0.16030476987361908,7349.0,123,2025-10-18 12:46:09.245862,,,,,,,,,
+,,,,123,2025-10-18 12:50:27.823474,0.17914599180221558,0.0020401664078235626,0.17914599180221558,0.19086749851703644,0.0030305664986371994,0.19086749851703644,,,
+,,,,123,2025-10-18 12:50:54.659012,,,,,,,0.1681680530309677,0.0024411641061306,0.1681680530309677
+0.18882454931735992,0.0022767737973481417,0.18882454931735992,7399.0,124,2025-10-18 12:53:36.458109,,,,,,,,,
+,,,,124,2025-10-18 12:58:58.353374,0.1688634157180786,0.0028244638815522194,0.1688634157180786,0.1675577014684677,0.0014679256128147244,0.1675577014684677,,,
+,,,,124,2025-10-18 12:59:49.789749,,,,,,,0.17099381983280182,0.0025067590177059174,0.17099381983280182
+0.16407403349876404,0.0013407047372311354,0.16407403349876404,7449.0,125,2025-10-18 13:01:43.572760,,,,,,,,,
+0.19242437183856964,0.004220108035951853,0.19242437183856964,7499.0,125,2025-10-18 13:06:03.563628,,,,,,,,,
+,,,,125,2025-10-18 13:07:39.996430,0.17762631177902222,0.0024607141967862844,0.17762631177902222,0.16475296020507812,0.0015977530274540186,0.16475296020507812,,,
+,,,,125,2025-10-18 13:08:29.615110,,,,,,,0.17141970992088318,0.00269533833488822,0.17141970992088318
+0.1381797343492508,0.000740273913834244,0.1381797343492508,7549.0,126,2025-10-18 13:14:27.229537,,,,,,,,,
+,,,,126,2025-10-18 13:16:45.347608,0.17360708117485046,0.0021172072738409042,0.17360708117485046,0.17631962895393372,0.002646936569362879,0.17631962895393372,,,
+,,,,126,2025-10-18 13:17:12.395276,,,,,,,0.1682378649711609,0.00252777012065053,0.1682378649711609
+0.14821754395961761,0.0009561408078297973,0.14821754395961761,7599.0,127,2025-10-18 13:22:12.769879,,,,,,,,,
+,,,,127,2025-10-18 13:25:16.632085,0.17359603941440582,0.0018532039830461144,0.17359603941440582,0.18380558490753174,0.004970822483301163,0.18380558490753174,,,
+,,,,127,2025-10-18 13:25:42.958435,,,,,,,0.16888427734375,0.002146107843145728,0.16888427734375
+0.16450700163841248,0.004860864486545324,0.16450700163841248,7649.0,128,2025-10-18 13:29:30.542909,,,,,,,,,
+,,,,128,2025-10-18 13:33:44.710685,0.17963305115699768,0.0028534550219774246,0.17963305115699768,0.17926722764968872,0.0033028656616806984,0.17926722764968872,,,
+,,,,128,2025-10-18 13:34:11.523579,,,,,,,0.1694229245185852,0.0026859466452151537,0.1694229245185852
+0.17557667195796967,0.0012909494107589126,0.17557667195796967,7699.0,129,2025-10-18 13:37:13.725185,,,,,,,,,
+,,,,129,2025-10-18 13:42:20.063941,0.1709597259759903,0.001870111096650362,0.1709597259759903,0.17332200706005096,0.0018417357932776213,0.17332200706005096,,,
+,,,,129,2025-10-18 13:42:45.888145,,,,,,,0.17081373929977417,0.0022764939349144697,0.17081373929977417
+0.20994704961776733,0.006640206556767225,0.20994704961776733,7749.0,130,2025-10-18 13:44:38.309465,,,,,,,,,
+0.16567811369895935,0.004631178453564644,0.16567811369895935,7799.0,130,2025-10-18 13:49:18.341390,,,,,,,,,
+,,,,130,2025-10-18 13:50:56.652059,0.17296558618545532,0.004543570335954428,0.17296558618545532,0.15698517858982086,0.0018252242589369416,0.15698517858982086,,,
+,,,,130,2025-10-18 13:51:46.833727,,,,,,,0.16777144372463226,0.0025284455623477697,0.16777144372463226
+0.19937947392463684,0.003603039775043726,0.19937947392463684,7849.0,131,2025-10-18 13:58:10.338814,,,,,,,,,
+,,,,131,2025-10-18 14:00:28.342074,0.15737959742546082,0.002662399085238576,0.15737959742546082,0.1641150265932083,0.003181211184710264,0.1641150265932083,,,
+,,,,131,2025-10-18 14:01:17.384529,,,,,,,0.17002935707569122,0.0026250940281897783,0.17002935707569122
+0.19037160277366638,0.0026484315749257803,0.19037160277366638,7899.0,132,2025-10-18 14:06:26.820417,,,,,,,,,
+,,,,132,2025-10-18 14:09:37.188237,0.16811063885688782,0.002534579485654831,0.16811063885688782,0.1740059107542038,0.0030527806375175714,0.1740059107542038,,,
+,,,,132,2025-10-18 14:10:04.621118,,,,,,,0.16731572151184082,0.0022469039540737867,0.16731572151184082
+0.16734205186367035,0.003596400609239936,0.16734205186367035,7949.0,133,2025-10-18 14:14:29.162554,,,,,,,,,
+,,,,133,2025-10-18 14:18:41.377734,0.17310088872909546,0.0022106748074293137,0.17310088872909546,0.17946235835552216,0.0036214345600456,0.17946235835552216,,,
+,,,,133,2025-10-18 14:19:08.921190,,,,,,,0.17093539237976074,0.00262367632240057,0.17093539237976074
+0.16218458116054535,0.0010143123799934983,0.16218458116054535,7999.0,134,2025-10-18 14:22:29.356254,,,,,,,,,
+,,,,134,2025-10-18 14:27:15.818488,0.16984130442142487,0.002622271189466119,0.16984130442142487,0.17139151692390442,0.0032581468112766743,0.17139151692390442,,,
+,,,,134,2025-10-18 14:27:46.411901,,,,,,,0.16836290061473846,0.0020440525840967894,0.16836290061473846
+0.15093620121479034,0.0022425223141908646,0.15093620121479034,8049.0,135,2025-10-18 14:29:42.501583,,,,,,,,,
+0.14134162664413452,0.0007607368170283735,0.14134162664413452,8099.0,135,2025-10-18 14:34:28.047507,,,,,,,,,
+,,,,135,2025-10-18 14:36:02.641138,0.16274602711200714,0.0012524665798991919,0.16274602711200714,0.17715278267860413,0.0035555383656173944,0.17715278267860413,,,
+,,,,135,2025-10-18 14:36:29.664696,,,,,,,0.1689552366733551,0.002120306948199868,0.1689552366733551
+0.16062809526920319,0.0009643124067224562,0.16062809526920319,8149.0,136,2025-10-18 14:43:01.271786,,,,,,,,,
+,,,,136,2025-10-18 14:45:16.916070,0.1574620008468628,0.0018672521691769361,0.1574620008468628,0.1671031266450882,0.002301909029483795,0.1671031266450882,,,
+,,,,136,2025-10-18 14:45:43.366562,,,,,,,0.163297638297081,0.0021673962473869324,0.163297638297081
+0.19146260619163513,0.002446930855512619,0.19146260619163513,8199.0,137,2025-10-18 14:50:58.216417,,,,,,,,,
+,,,,137,2025-10-18 14:54:14.398687,0.17851755023002625,0.0027787848375737667,0.17851755023002625,0.16508054733276367,0.0021053440868854523,0.16508054733276367,,,
+,,,,137,2025-10-18 14:54:41.307551,,,,,,,0.16884775459766388,0.0023110939655452967,0.16884775459766388
+0.1675911396741867,0.002372484654188156,0.1675911396741867,8249.0,138,2025-10-18 14:58:53.375590,,,,,,,,,
+,,,,138,2025-10-18 15:03:04.051511,0.1647021770477295,0.0013637867523357272,0.1647021770477295,0.1640520542860031,0.001614785403944552,0.1640520542860031,,,
+,,,,138,2025-10-18 15:03:52.911153,,,,,,,0.16990602016448975,0.0024826480075716972,0.16990602016448975
+0.16947630047798157,0.001289917971007526,0.16947630047798157,8299.0,139,2025-10-18 15:06:48.896692,,,,,,,,,
+,,,,139,2025-10-18 15:12:24.120143,0.16882732510566711,0.0022268579341471195,0.16882732510566711,0.17508356273174286,0.0035439063794910908,0.17508356273174286,,,
+,,,,139,2025-10-18 15:12:51.479238,,,,,,,0.16813024878501892,0.002450366038829088,0.16813024878501892
+0.16669541597366333,0.003690693760290742,0.16669541597366333,8349.0,140,2025-10-18 15:14:37.666048,,,,,,,,,
+0.16206659376621246,0.0011848964495584369,0.16206659376621246,8399.0,140,2025-10-18 15:19:39.158852,,,,,,,,,
+,,,,140,2025-10-18 15:21:14.606778,0.1718534678220749,0.0020619819406419992,0.1718534678220749,0.16899333894252777,0.0023428292479366064,0.16899333894252777,,,
+,,,,140,2025-10-18 15:21:39.856255,,,,,,,0.16647711396217346,0.0023990117479115725,0.16647711396217346
+0.14501120150089264,0.0008775520836934447,0.14501120150089264,8449.0,141,2025-10-18 15:27:36.811854,,,,,,,,,
+,,,,141,2025-10-18 15:29:46.669541,0.16284707188606262,0.001784048625268042,0.16284707188606262,0.1734786182641983,0.004054360091686249,0.1734786182641983,,,
+,,,,141,2025-10-18 15:30:13.968985,,,,,,,0.16770529747009277,0.0025696787051856518,0.16770529747009277
+0.15844494104385376,0.0009282383834943175,0.15844494104385376,8499.0,142,2025-10-18 15:35:24.972917,,,,,,,,,
+,,,,142,2025-10-18 15:38:37.630893,0.17092858254909515,0.0021121902391314507,0.17092858254909515,0.1665743887424469,0.0017486904980614781,0.1665743887424469,,,
+,,,,142,2025-10-18 15:39:04.677432,,,,,,,0.16391228139400482,0.002413465641438961,0.16391228139400482
+0.16148987412452698,0.0023036873899400234,0.16148987412452698,8549.0,143,2025-10-18 15:42:54.997519,,,,,,,,,
+,,,,143,2025-10-18 15:46:57.663136,0.17369437217712402,0.00237613869830966,0.17369437217712402,0.17214737832546234,0.002005875576287508,0.17214737832546234,,,
+,,,,143,2025-10-18 15:47:24.508880,,,,,,,0.16797178983688354,0.00234835222363472,0.16797178983688354
+0.16738437116146088,0.0018455508397892118,0.16738437116146088,8599.0,144,2025-10-18 15:50:12.747858,,,,,,,,,
+,,,,144,2025-10-18 15:55:31.659805,0.16212035715579987,0.0022749495692551136,0.16212035715579987,0.16841590404510498,0.002240775851532817,0.16841590404510498,,,
+,,,,144,2025-10-18 15:55:58.056759,,,,,,,0.16492806375026703,0.002173844026401639,0.16492806375026703
+0.16014383733272552,0.004075023345649242,0.16014383733272552,8649.0,145,2025-10-18 15:57:52.145039,,,,,,,,,
+0.15639816224575043,0.000899436476174742,0.15639816224575043,8699.0,145,2025-10-18 16:02:36.202076,,,,,,,,,
+,,,,145,2025-10-18 16:04:12.607501,0.16379180550575256,0.00343183521181345,0.16379180550575256,0.17553074657917023,0.002196820452809334,0.17553074657917023,,,
+,,,,145,2025-10-18 16:04:39.402943,,,,,,,0.16658130288124084,0.0023362571373581886,0.16658130288124084
+0.15639729797840118,0.0014757228782400489,0.15639729797840118,8749.0,146,2025-10-18 16:10:31.572966,,,,,,,,,
+,,,,146,2025-10-18 16:12:50.192079,0.16374580562114716,0.0029360242187976837,0.16374580562114716,0.160316601395607,0.0013626556610688567,0.160316601395607,,,
+,,,,146,2025-10-18 16:13:41.132943,,,,,,,0.16817283630371094,0.002375897252932191,0.16817283630371094
+0.18062113225460052,0.0022773027885705233,0.18062113225460052,8799.0,147,2025-10-18 16:18:39.937112,,,,,,,,,
+,,,,147,2025-10-18 16:21:53.846686,0.1756197065114975,0.004172218963503838,0.1756197065114975,0.16552653908729553,0.002654873300343752,0.16552653908729553,,,
+,,,,147,2025-10-18 16:22:20.965772,,,,,,,0.1688005030155182,0.002962264930829406,0.1688005030155182
+0.18705491721630096,0.0017661675810813904,0.18705491721630096,8849.0,148,2025-10-18 16:26:10.644940,,,,,,,,,
+,,,,148,2025-10-18 16:30:09.513874,0.17052632570266724,0.0022772797383368015,0.17052632570266724,0.16632500290870667,0.0032139536924660206,0.16632500290870667,,,
+,,,,148,2025-10-18 16:30:35.314041,,,,,,,0.16821229457855225,0.002255457453429699,0.16821229457855225
+0.17382121086120605,0.001373612554743886,0.17382121086120605,8899.0,149,2025-10-18 16:33:54.724365,,,,,,,,,
+,,,,149,2025-10-18 16:39:33.858490,0.16812191903591156,0.001613133237697184,0.16812191903591156,0.18126967549324036,0.001665151328779757,0.18126967549324036,,,
+,,,,149,2025-10-18 16:40:00.043973,,,,,,,0.16269323229789734,0.002054853131994605,0.16269323229789734
+0.15019221603870392,0.0019810835365206003,0.15019221603870392,8949.0,150,2025-10-18 16:41:54.019710,,,,,,,,,
+0.17612537741661072,0.0023536861408501863,0.17612537741661072,8999.0,150,2025-10-18 16:46:26.374258,,,,,,,,,
+,,,,150,2025-10-18 16:48:01.816275,0.17344777286052704,0.0015571427065879107,0.17344777286052704,0.160284623503685,0.0013145399279892445,0.160284623503685,,,
+,,,,150,2025-10-18 16:48:53.503913,,,,,,,0.1661422848701477,0.002643811283633113,0.1661422848701477
+0.15977874398231506,0.0012608645483851433,0.15977874398231506,9049.0,151,2025-10-18 16:54:38.056148,,,,,,,,,
+,,,,151,2025-10-18 16:56:51.527906,0.16948360204696655,0.002639501355588436,0.16948360204696655,0.16342777013778687,0.002349588554352522,0.16342777013778687,,,
+,,,,151,2025-10-18 16:57:19.910305,,,,,,,0.16543357074260712,0.0024395338259637356,0.16543357074260712
+0.16790112853050232,0.004128747154027224,0.16790112853050232,9099.0,152,2025-10-18 17:02:28.457127,,,,,,,,,
+,,,,152,2025-10-18 17:05:37.848101,0.16828517615795135,0.0021290292497724295,0.16828517615795135,0.16690072417259216,0.0022078484762459993,0.16690072417259216,,,
+,,,,152,2025-10-18 17:06:04.932536,,,,,,,0.1701730191707611,0.002644902328029275,0.1701730191707611
+0.1723751425743103,0.0018969598459079862,0.1723751425743103,9149.0,153,2025-10-18 17:09:53.387467,,,,,,,,,
+,,,,153,2025-10-18 17:13:57.879527,0.15335732698440552,0.0018044383032247424,0.15335732698440552,0.16801266372203827,0.003957069478929043,0.16801266372203827,,,
+,,,,153,2025-10-18 17:14:22.884685,,,,,,,0.16578689217567444,0.002712177811190486,0.16578689217567444
+0.18760725855827332,0.0029388933908194304,0.18760725855827332,9199.0,154,2025-10-18 17:17:22.956648,,,,,,,,,
+,,,,154,2025-10-18 17:22:28.332380,0.18074370920658112,0.0037226902786642313,0.18074370920658112,0.17603106796741486,0.0020559465046972036,0.17603106796741486,,,
+,,,,154,2025-10-18 17:22:54.074328,,,,,,,0.16490837931632996,0.0025751388166099787,0.16490837931632996
+0.1918710321187973,0.0073611922562122345,0.1918710321187973,9249.0,155,2025-10-18 17:24:57.037193,,,,,,,,,
+0.19398075342178345,0.001423787442035973,0.19398075342178345,9299.0,155,2025-10-18 17:29:44.612741,,,,,,,,,
+,,,,155,2025-10-18 17:31:18.494294,0.17167413234710693,0.0019270686898380518,0.17167413234710693,0.17269200086593628,0.0029046249110251665,0.17269200086593628,,,
+,,,,155,2025-10-18 17:31:44.144180,,,,,,,0.16376619040966034,0.002385938074439764,0.16376619040966034
+0.1824871003627777,0.00140847428701818,0.1824871003627777,9349.0,156,2025-10-18 17:37:45.752373,,,,,,,,,
+,,,,156,2025-10-18 17:40:06.525300,0.17216180264949799,0.0030474502127617598,0.17216180264949799,0.16961167752742767,0.0024943500757217407,0.16961167752742767,,,
+,,,,156,2025-10-18 17:40:31.721985,,,,,,,0.16566796600818634,0.0024654429871588945,0.16566796600818634
+0.17210158705711365,0.0037131875287741423,0.17210158705711365,9399.0,157,2025-10-18 17:45:25.427037,,,,,,,,,
+,,,,157,2025-10-18 17:48:36.678709,0.1584700495004654,0.0024758067447692156,0.1584700495004654,0.17502158880233765,0.0028640986420214176,0.17502158880233765,,,
+,,,,157,2025-10-18 17:49:02.550226,,,,,,,0.16377507150173187,0.002244860166683793,0.16377507150173187
+0.1441374123096466,0.0009606756502762437,0.1441374123096466,9449.0,158,2025-10-18 17:53:07.291799,,,,,,,,,
+,,,,158,2025-10-18 17:57:15.083629,0.16964112222194672,0.0024223767686635256,0.16964112222194672,0.17716914415359497,0.0023955015931278467,0.17716914415359497,,,
+,,,,158,2025-10-18 17:57:41.211828,,,,,,,0.16482090950012207,0.002435226459056139,0.16482090950012207
+0.17215265333652496,0.0018923330353572965,0.17215265333652496,9499.0,159,2025-10-18 18:00:41.957370,,,,,,,,,
+,,,,159,2025-10-18 18:05:38.860936,0.16517218947410583,0.002250908175483346,0.16517218947410583,0.16438300907611847,0.001525270869024098,0.16438300907611847,,,
+,,,,159,2025-10-18 18:06:05.505946,,,,,,,0.163377583026886,0.0023770539555698633,0.163377583026886
+0.14506715536117554,0.0011462427210062742,0.14506715536117554,9549.0,160,2025-10-18 18:07:49.996811,,,,,,,,,
+0.13035890460014343,0.0012403823202475905,0.13035890460014343,9599.0,160,2025-10-18 18:12:51.943757,,,,,,,,,
+,,,,160,2025-10-18 18:14:28.491323,0.16926898062229156,0.0019492472056299448,0.16926898062229156,0.17364028096199036,0.0016073390142992139,0.17364028096199036,,,
+,,,,160,2025-10-18 18:14:54.583665,,,,,,,0.1637600213289261,0.0025646837893873453,0.1637600213289261
+0.14870570600032806,0.0012067133793607354,0.14870570600032806,9649.0,161,2025-10-18 18:20:49.283028,,,,,,,,,
+,,,,161,2025-10-18 18:23:23.663742,0.1691313236951828,0.0023625337053090334,0.1691313236951828,0.16528913378715515,0.0015291842864826322,0.16528913378715515,,,
+,,,,161,2025-10-18 18:23:48.858556,,,,,,,0.16499803960323334,0.002308910945430398,0.16499803960323334
+0.18450725078582764,0.0012048614444211125,0.18450725078582764,9699.0,162,2025-10-18 18:28:37.238445,,,,,,,,,
+,,,,162,2025-10-18 18:31:51.626162,0.1675945222377777,0.0017748021055012941,0.1675945222377777,0.1592305302619934,0.0014822928933426738,0.1592305302619934,,,
+,,,,162,2025-10-18 18:32:38.607833,,,,,,,0.16622285544872284,0.0023248561192303896,0.16622285544872284
+0.11986751109361649,0.0036030977498739958,0.11986751109361649,9749.0,163,2025-10-18 18:37:17.256703,,,,,,,,,
+,,,,163,2025-10-18 18:41:20.699415,0.18592569231987,0.0028464458882808685,0.18592569231987,0.1819436103105545,0.0023785093799233437,0.1819436103105545,,,
+,,,,163,2025-10-18 18:41:46.589595,,,,,,,0.16248641908168793,0.0024228813126683235,0.16248641908168793
+0.16858968138694763,0.0011538491817191243,0.16858968138694763,9799.0,164,2025-10-18 18:44:47.739524,,,,,,,,,
+,,,,164,2025-10-18 18:49:57.641539,0.16409941017627716,0.0027800085954368114,0.16409941017627716,0.1594044715166092,0.002949752612039447,0.1594044715166092,,,
+,,,,164,2025-10-18 18:50:45.147513,,,,,,,0.16408906877040863,0.0023370475973933935,0.16408906877040863
+0.17407986521720886,0.005999045446515083,0.17407986521720886,9849.0,165,2025-10-18 18:52:38.311591,,,,,,,,,
+0.13519398868083954,0.0007263097213581204,0.13519398868083954,9899.0,165,2025-10-18 18:57:25.595222,,,,,,,,,
+,,,,165,2025-10-18 18:59:00.850570,0.16942842304706573,0.0030411595944315195,0.16942842304706573,0.15993739664554596,0.002023509005084634,0.15993739664554596,,,
+,,,,165,2025-10-18 18:59:26.524168,,,,,,,0.16760465502738953,0.0023435805924236774,0.16760465502738953
+0.16934430599212646,0.0035327759105712175,0.16934430599212646,9949.0,166,2025-10-18 19:04:51.166133,,,,,,,,,
+,,,,166,2025-10-18 19:07:23.434299,0.16332435607910156,0.002076209057122469,0.16332435607910156,0.1628931611776352,0.001835156581364572,0.1628931611776352,,,
+,,,,166,2025-10-18 19:07:49.764331,,,,,,,0.1615578681230545,0.0026283988263458014,0.1615578681230545
+0.16136956214904785,0.0016064472729340196,0.16136956214904785,9999.0,167,2025-10-18 19:12:57.483722,,,,,,,,,
+,,,,167,2025-10-18 19:16:03.210596,0.16567657887935638,0.002570742042735219,0.16567657887935638,0.16593670845031738,0.0028152980376034975,0.16593670845031738,,,
+,,,,167,2025-10-18 19:16:29.426505,,,,,,,0.15768812596797943,0.0021952707320451736,0.15768812596797943
+0.16285890340805054,0.0015736725181341171,0.16285890340805054,10049.0,168,2025-10-18 19:20:30.291160,,,,,,,,,
+,,,,168,2025-10-18 19:24:43.594953,0.15655115246772766,0.0017366427928209305,0.15655115246772766,0.17047551274299622,0.002774252323433757,0.17047551274299622,,,
+,,,,168,2025-10-18 19:25:10.903588,,,,,,,0.1625264436006546,0.0020423142705112696,0.1625264436006546
+0.16876094043254852,0.0013191553298383951,0.16876094043254852,10099.0,169,2025-10-18 19:28:00.292682,,,,,,,,,
+,,,,169,2025-10-18 19:33:19.404502,0.16073468327522278,0.0015739540103822947,0.16073468327522278,0.15802007913589478,0.0019076671451330185,0.15802007913589478,,,
+,,,,169,2025-10-18 19:34:07.334112,,,,,,,0.15805843472480774,0.0021487586200237274,0.15805843472480774
+0.1594962626695633,0.002981166122481227,0.1594962626695633,10149.0,170,2025-10-18 19:35:57.386187,,,,,,,,,
+0.13391008973121643,0.000763847550842911,0.13391008973121643,10199.0,170,2025-10-18 19:40:31.452924,,,,,,,,,
+,,,,170,2025-10-18 19:42:08.408111,0.1602254956960678,0.00114049029070884,0.1602254956960678,0.1537218987941742,0.0018883382435888052,0.1537218987941742,,,
+,,,,170,2025-10-18 19:42:57.873688,,,,,,,0.16033871471881866,0.002232277998700738,0.16033871471881866
+0.17047427594661713,0.0022820218000561,0.17047427594661713,10249.0,171,2025-10-18 19:48:48.644880,,,,,,,,,
+,,,,171,2025-10-18 19:51:05.524318,0.17113961279392242,0.002830875338986516,0.17113961279392242,0.15208323299884796,0.0012289577862247825,0.15208323299884796,,,
+,,,,171,2025-10-18 19:51:56.341159,,,,,,,0.16201873123645782,0.0022584276739507914,0.16201873123645782
+0.18917986750602722,0.007162587717175484,0.18917986750602722,10299.0,172,2025-10-18 19:56:21.979833,,,,,,,,,
+,,,,172,2025-10-18 19:59:53.084548,0.15303444862365723,0.0012743662809953094,0.15303444862365723,0.15973511338233948,0.0032345487270504236,0.15973511338233948,,,
+,,,,172,2025-10-18 20:00:18.708375,,,,,,,0.16141048073768616,0.0028440612368285656,0.16141048073768616
+0.16320054233074188,0.0015976728172972798,0.16320054233074188,10349.0,173,2025-10-18 20:04:17.085798,,,,,,,,,
+,,,,173,2025-10-18 20:08:40.518347,0.1821550875902176,0.0023563296999782324,0.1821550875902176,0.16566118597984314,0.002990506589412689,0.16566118597984314,,,
+,,,,173,2025-10-18 20:09:07.022466,,,,,,,0.16308759152889252,0.002063943538814783,0.16308759152889252
+0.16062429547309875,0.0009852841030806303,0.16062429547309875,10399.0,174,2025-10-18 20:12:14.397443,,,,,,,,,
+,,,,174,2025-10-18 20:17:13.410261,0.16508890688419342,0.00159766327124089,0.16508890688419342,0.16455979645252228,0.003171344520524144,0.16455979645252228,,,
+,,,,174,2025-10-18 20:17:39.122227,,,,,,,0.15936684608459473,0.0021406635642051697,0.15936684608459473
+0.1306246817111969,0.0013794933911412954,0.1306246817111969,10449.0,175,2025-10-18 20:19:15.826269,,,,,,,,,
+0.17558704316616058,0.0017183080781251192,0.17558704316616058,10499.0,175,2025-10-18 20:23:55.080245,,,,,,,,,
+,,,,175,2025-10-18 20:25:31.244293,0.1654147505760193,0.0032618038821965456,0.1654147505760193,0.16697604954242706,0.002813246101140976,0.16697604954242706,,,
+,,,,175,2025-10-18 20:25:56.007770,,,,,,,0.16336454451084137,0.002488762140274048,0.16336454451084137
+0.16589714586734772,0.002073988551273942,0.16589714586734772,10549.0,176,2025-10-18 20:31:42.036754,,,,,,,,,
+,,,,176,2025-10-18 20:33:54.915371,0.15844488143920898,0.0019223196431994438,0.15844488143920898,0.1667466014623642,0.0018982666078954935,0.1667466014623642,,,
+,,,,176,2025-10-18 20:34:21.765007,,,,,,,0.15785668790340424,0.0023270200472325087,0.15785668790340424
+0.16064536571502686,0.00759977288544178,0.16064536571502686,10599.0,177,2025-10-18 20:39:15.757663,,,,,,,,,
+,,,,177,2025-10-18 20:42:19.218093,0.16146472096443176,0.0028038108721375465,0.16146472096443176,0.1572839319705963,0.0020465231500566006,0.1572839319705963,,,
+,,,,177,2025-10-18 20:42:46.028722,,,,,,,0.16309386491775513,0.0024655491579324007,0.16309386491775513
+0.14652305841445923,0.0015081820311024785,0.14652305841445923,10649.0,178,2025-10-18 20:46:52.311650,,,,,,,,,
+,,,,178,2025-10-18 20:51:13.046399,0.16562414169311523,0.0035175178200006485,0.16562414169311523,0.16792914271354675,0.0021996793802827597,0.16792914271354675,,,
+,,,,178,2025-10-18 20:51:39.263434,,,,,,,0.1626991182565689,0.0021291335579007864,0.1626991182565689
+0.18456324934959412,0.007284022402018309,0.18456324934959412,10699.0,179,2025-10-18 20:54:22.564843,,,,,,,,,
+,,,,179,2025-10-18 20:59:43.143361,0.17515020072460175,0.002405806677415967,0.17515020072460175,0.17056891322135925,0.0023873187601566315,0.17056891322135925,,,
+,,,,179,2025-10-18 21:00:09.197153,,,,,,,0.16291120648384094,0.0026221908628940582,0.16291120648384094
+0.14072558283805847,0.0035067026037722826,0.14072558283805847,10749.0,180,2025-10-18 21:02:03.846445,,,,,,,,,
+0.18288148939609528,0.0014652140671387315,0.18288148939609528,10799.0,180,2025-10-18 21:06:43.566188,,,,,,,,,
+,,,,180,2025-10-18 21:08:20.298575,0.16598866879940033,0.0019646736327558756,0.16598866879940033,0.1702692210674286,0.002330145565792918,0.1702692210674286,,,
+,,,,180,2025-10-18 21:08:47.261662,,,,,,,0.15801751613616943,0.0020179261919111013,0.15801751613616943
+0.1520535796880722,0.0010829061502590775,0.1520535796880722,10849.0,181,2025-10-18 21:14:27.213950,,,,,,,,,
+,,,,181,2025-10-18 21:16:42.406811,0.16458235681056976,0.0025201705284416676,0.16458235681056976,0.1648712158203125,0.002071926835924387,0.1648712158203125,,,
+,,,,181,2025-10-18 21:17:07.042377,,,,,,,0.16285422444343567,0.002549604047089815,0.16285422444343567
+0.1709979921579361,0.001119202352128923,0.1709979921579361,10899.0,182,2025-10-18 21:21:51.884339,,,,,,,,,
+,,,,182,2025-10-18 21:25:05.191531,0.15730346739292145,0.002056262455880642,0.15730346739292145,0.17081260681152344,0.0032142873387783766,0.17081260681152344,,,
+,,,,182,2025-10-18 21:25:33.277707,,,,,,,0.16011008620262146,0.002183248521760106,0.16011008620262146
+0.19169585406780243,0.0014542845310643315,0.19169585406780243,10949.0,183,2025-10-18 21:29:27.375515,,,,,,,,,
+,,,,183,2025-10-18 21:33:48.596908,0.1613297015428543,0.0017307482194155455,0.1613297015428543,0.16570024192333221,0.0020950252655893564,0.16570024192333221,,,
+,,,,183,2025-10-18 21:34:14.149538,,,,,,,0.16144655644893646,0.002317078411579132,0.16144655644893646
+0.1347837746143341,0.0011484503047540784,0.1347837746143341,10999.0,184,2025-10-18 21:37:02.772407,,,,,,,,,
+,,,,184,2025-10-18 21:42:24.987041,0.16222909092903137,0.002526156837120652,0.16222909092903137,0.15673652291297913,0.0021326267160475254,0.15673652291297913,,,
+,,,,184,2025-10-18 21:43:14.564589,,,,,,,0.16020365059375763,0.0020984329748898745,0.16020365059375763
+0.12460829317569733,0.0011327809188514948,0.12460829317569733,11049.0,185,2025-10-18 21:45:00.946001,,,,,,,,,
+0.167076975107193,0.00411192374303937,0.167076975107193,11099.0,185,2025-10-18 21:49:44.334357,,,,,,,,,
+,,,,185,2025-10-18 21:51:21.120111,0.16112244129180908,0.001991905039176345,0.16112244129180908,0.16972969472408295,0.0027652063872665167,0.16972969472408295,,,
+,,,,185,2025-10-18 21:51:46.346400,,,,,,,0.15787988901138306,0.0021398523822426796,0.15787988901138306
+0.14997261762619019,0.0011263040360063314,0.14997261762619019,11149.0,186,2025-10-18 21:58:09.415484,,,,,,,,,
+,,,,186,2025-10-18 22:00:26.729798,0.15549352765083313,0.0024479166604578495,0.15549352765083313,0.174645334482193,0.0040183598175644875,0.174645334482193,,,
+,,,,186,2025-10-18 22:00:53.720139,,,,,,,0.1597420871257782,0.002450634492561221,0.1597420871257782
+0.15422074496746063,0.0014287933008745313,0.15422074496746063,11199.0,187,2025-10-18 22:05:42.730185,,,,,,,,,
+,,,,187,2025-10-18 22:08:55.121587,0.16343161463737488,0.002849639393389225,0.16343161463737488,0.17442405223846436,0.002244990086182952,0.17442405223846436,,,
+,,,,187,2025-10-18 22:09:21.172263,,,,,,,0.16213154792785645,0.002170412102714181,0.16213154792785645
+0.17595456540584564,0.001141022308729589,0.17595456540584564,11249.0,188,2025-10-18 22:13:13.834656,,,,,,,,,
+,,,,188,2025-10-18 22:17:18.420156,0.15725243091583252,0.0026720925234258175,0.15725243091583252,0.16878293454647064,0.002215262269601226,0.16878293454647064,,,
+,,,,188,2025-10-18 22:17:45.385841,,,,,,,0.15973582863807678,0.002270572353154421,0.15973582863807678
+0.14532707631587982,0.0011278579477220774,0.14532707631587982,11299.0,189,2025-10-18 22:20:32.465783,,,,,,,,,
+,,,,189,2025-10-18 22:25:52.880311,0.14740489423274994,0.0016571421874687076,0.14740489423274994,0.16118475794792175,0.003453111043199897,0.16118475794792175,,,
+,,,,189,2025-10-18 22:26:18.514478,,,,,,,0.1589091271162033,0.0022456147707998753,0.1589091271162033
+0.1925954818725586,0.003094886429607868,0.1925954818725586,11349.0,190,2025-10-18 22:28:10.448370,,,,,,,,,
+0.14470113813877106,0.001865664846263826,0.14470113813877106,11399.0,190,2025-10-18 22:32:45.936762,,,,,,,,,
+,,,,190,2025-10-18 22:34:25.010863,0.16808202862739563,0.00314953550696373,0.16808202862739563,0.16676299273967743,0.0015882699517533183,0.16676299273967743,,,
+,,,,190,2025-10-18 22:34:50.914872,,,,,,,0.16180144250392914,0.002420556265860796,0.16180144250392914
+0.1787720024585724,0.0015858056722208858,0.1787720024585724,11449.0,191,2025-10-18 22:40:30.314712,,,,,,,,,
+,,,,191,2025-10-18 22:43:03.734583,0.16099998354911804,0.0028800584841519594,0.16099998354911804,0.15447105467319489,0.0016316273249685764,0.15447105467319489,,,
+,,,,191,2025-10-18 22:43:53.684675,,,,,,,0.15898379683494568,0.0020228629000484943,0.15898379683494568
+0.16154778003692627,0.001346338540315628,0.16154778003692627,11499.0,192,2025-10-18 22:48:41.033300,,,,,,,,,
+,,,,192,2025-10-18 22:51:54.711899,0.16511620581150055,0.0022454645950347185,0.16511620581150055,0.16475646197795868,0.0026590945199131966,0.16475646197795868,,,
+,,,,192,2025-10-18 22:52:20.447039,,,,,,,0.16150008141994476,0.0023791631683707237,0.16150008141994476
+0.17162415385246277,0.00160073465667665,0.17162415385246277,11549.0,193,2025-10-18 22:56:13.767830,,,,,,,,,
+,,,,193,2025-10-18 23:00:33.658839,0.17356662452220917,0.00222880020737648,0.17356662452220917,0.16701166331768036,0.0027353577315807343,0.16701166331768036,,,
+,,,,193,2025-10-18 23:01:00.874912,,,,,,,0.1559414565563202,0.0020224573090672493,0.1559414565563202
+0.14163395762443542,0.0026498998049646616,0.14163395762443542,11599.0,194,2025-10-18 23:03:45.535442,,,,,,,,,
+,,,,194,2025-10-18 23:08:40.694795,0.15648765861988068,0.0018952608807012439,0.15648765861988068,0.1525379866361618,0.0013558672508224845,0.1525379866361618,,,
+,,,,194,2025-10-18 23:09:32.520092,,,,,,,0.15742391347885132,0.00215127388946712,0.15742391347885132
+0.17018549144268036,0.00674911355599761,0.17018549144268036,11649.0,195,2025-10-18 23:11:18.446544,,,,,,,,,
+0.17035290598869324,0.003270747372880578,0.17035290598869324,11699.0,195,2025-10-18 23:15:59.228848,,,,,,,,,
+,,,,195,2025-10-18 23:17:32.060450,0.16080571711063385,0.001551021239720285,0.16080571711063385,0.16335730254650116,0.0025406144559383392,0.16335730254650116,,,
+,,,,195,2025-10-18 23:17:58.417197,,,,,,,0.16150067746639252,0.002648317953571677,0.16150067746639252
+0.20658282935619354,0.005716864950954914,0.20658282935619354,11749.0,196,2025-10-18 23:23:46.989707,,,,,,,,,
+,,,,196,2025-10-18 23:26:02.152524,0.1653546541929245,0.0023022100795060396,0.1653546541929245,0.16155476868152618,0.002050490351393819,0.16155476868152618,,,
+,,,,196,2025-10-18 23:26:29.111379,,,,,,,0.15905003249645233,0.0020185508765280247,0.15905003249645233
+0.13444961607456207,0.0008534911321476102,0.13444961607456207,11799.0,197,2025-10-18 23:31:23.297942,,,,,,,,,
+,,,,197,2025-10-18 23:34:27.391380,0.17539651691913605,0.0022020128089934587,0.17539651691913605,0.17563048005104065,0.0024171890690922737,0.17563048005104065,,,
+,,,,197,2025-10-18 23:34:54.019671,,,,,,,0.15809857845306396,0.002180725336074829,0.15809857845306396
+0.16668163239955902,0.0037132485304027796,0.16668163239955902,11849.0,198,2025-10-18 23:38:56.942348,,,,,,,,,
+,,,,198,2025-10-18 23:43:07.875641,0.1632656455039978,0.0024961039889603853,0.1632656455039978,0.1626524180173874,0.0033942300360649824,0.1626524180173874,,,
+,,,,198,2025-10-18 23:43:34.985278,,,,,,,0.1553637981414795,0.0023369593545794487,0.1553637981414795
+0.18984103202819824,0.0017148350598290563,0.18984103202819824,11899.0,199,2025-10-18 23:46:24.044321,,,,,,,,,
+,,,,199,2025-10-18 23:51:44.294725,0.1598050594329834,0.0014560577692463994,0.1598050594329834,0.15690165758132935,0.0018331775208935142,0.15690165758132935,,,
+,,,,199,2025-10-18 23:52:10.915974,,,,,,,0.1555202305316925,0.0020290028769522905,0.1555202305316925
+0.16987338662147522,0.0042905681766569614,0.16987338662147522,11949.0,200,2025-10-18 23:53:59.674631,,,,,,,,,
+0.17037144303321838,0.0029773935675621033,0.17037144303321838,11999.0,200,2025-10-18 23:58:28.577327,,,,,,,,,
+,,,,200,2025-10-19 00:00:08.119257,0.15334947407245636,0.002655019285157323,0.15334947407245636,0.16155818104743958,0.0020157324615865946,0.16155818104743958,,,
+,,,,200,2025-10-19 00:00:35.769215,,,,,,,0.16354960203170776,0.0024960720911622047,0.16354960203170776
+0.16818051040172577,0.0011891595786437392,0.16818051040172577,12049.0,201,2025-10-19 00:06:10.092599,,,,,,,,,
+,,,,201,2025-10-19 00:08:23.204526,0.17035368084907532,0.0018054258543998003,0.17035368084907532,0.17198115587234497,0.002863249508664012,0.17198115587234497,,,
+,,,,201,2025-10-19 00:08:48.865768,,,,,,,0.15894968807697296,0.0019844381604343653,0.15894968807697296
+0.15432479977607727,0.004848610609769821,0.15432479977607727,12099.0,202,2025-10-19 00:13:44.673989,,,,,,,,,
+,,,,202,2025-10-19 00:16:58.399888,0.16657479107379913,0.0027594699058681726,0.16657479107379913,0.1491669863462448,0.0019385465420782566,0.1491669863462448,,,
+,,,,202,2025-10-19 00:17:46.098275,,,,,,,0.15920056402683258,0.0023397065233439207,0.15920056402683258
+0.15216630697250366,0.005647231359034777,0.15216630697250366,12149.0,203,2025-10-19 00:21:48.592186,,,,,,,,,
+,,,,203,2025-10-19 00:26:26.011378,0.16784004867076874,0.0030442175921052694,0.16784004867076874,0.16698265075683594,0.0035841958597302437,0.16698265075683594,,,
+,,,,203,2025-10-19 00:26:52.160077,,,,,,,0.15982529520988464,0.0024572613183408976,0.15982529520988464
+0.16676698625087738,0.0009572991402819753,0.16676698625087738,12199.0,204,2025-10-19 00:29:34.076051,,,,,,,,,
+,,,,204,2025-10-19 00:34:49.817623,0.1649886965751648,0.0020271134562790394,0.1649886965751648,0.16522139310836792,0.0036463604774326086,0.16522139310836792,,,
+,,,,204,2025-10-19 00:35:17.402263,,,,,,,0.15716734528541565,0.0020821907091885805,0.15716734528541565
+0.15003922581672668,0.001118668937124312,0.15003922581672668,12249.0,205,2025-10-19 00:37:09.943650,,,,,,,,,
+0.14856424927711487,0.001101326197385788,0.14856424927711487,12299.0,205,2025-10-19 00:41:56.299218,,,,,,,,,
+,,,,205,2025-10-19 00:43:36.107161,0.1703549325466156,0.001577939372509718,0.1703549325466156,0.15857651829719543,0.002273518592119217,0.15857651829719543,,,
+,,,,205,2025-10-19 00:44:03.262594,,,,,,,0.16069994866847992,0.0022969336714595556,0.16069994866847992
+0.18627850711345673,0.0037286351434886456,0.18627850711345673,12349.0,206,2025-10-19 00:49:42.526233,,,,,,,,,
+,,,,206,2025-10-19 00:51:56.233963,0.16383975744247437,0.0022997793275862932,0.16383975744247437,0.17271828651428223,0.002382875420153141,0.17271828651428223,,,
+,,,,206,2025-10-19 00:52:20.744273,,,,,,,0.16013815999031067,0.0026268691290169954,0.16013815999031067
+0.13787983357906342,0.0015819247346371412,0.13787983357906342,12399.0,207,2025-10-19 00:57:05.721226,,,,,,,,,
+,,,,207,2025-10-19 01:00:26.526177,0.1556379795074463,0.0038986916188150644,0.1556379795074463,0.17058484256267548,0.0024779934901744127,0.17058484256267548,,,
+,,,,207,2025-10-19 01:00:52.399887,,,,,,,0.15691673755645752,0.00217639678157866,0.15691673755645752
+0.1367948353290558,0.0026602058205753565,0.1367948353290558,12449.0,208,2025-10-19 01:04:57.360696,,,,,,,,,
+,,,,208,2025-10-19 01:09:12.771117,0.15575937926769257,0.002091963542625308,0.15575937926769257,0.1666165292263031,0.003454409074038267,0.1666165292263031,,,
+,,,,208,2025-10-19 01:09:37.829066,,,,,,,0.15758760273456573,0.00241423724219203,0.15758760273456573
+0.1786421835422516,0.0013930563582107425,0.1786421835422516,12499.0,209,2025-10-19 01:12:32.505551,,,,,,,,,
+,,,,209,2025-10-19 01:17:28.842400,0.15366698801517487,0.0015740805538371205,0.15366698801517487,0.1604490727186203,0.0017991338390856981,0.1604490727186203,,,
+,,,,209,2025-10-19 01:17:53.941279,,,,,,,0.15753410756587982,0.002113065216690302,0.15753410756587982
+0.16415093839168549,0.0016982421511784196,0.16415093839168549,12549.0,210,2025-10-19 01:19:41.027787,,,,,,,,,
+0.1387270838022232,0.0010935493046417832,0.1387270838022232,12599.0,210,2025-10-19 01:24:36.459870,,,,,,,,,
+,,,,210,2025-10-19 01:26:11.966809,0.15649817883968353,0.002666278975084424,0.15649817883968353,0.16546538472175598,0.002038015518337488,0.16546538472175598,,,
+,,,,210,2025-10-19 01:26:37.366097,,,,,,,0.15942999720573425,0.0024053012020885944,0.15942999720573425
+0.15394224226474762,0.0021478524431586266,0.15394224226474762,12649.0,211,2025-10-19 01:32:39.502124,,,,,,,,,
+,,,,211,2025-10-19 01:34:52.788762,0.16880366206169128,0.0016948656411841512,0.16880366206169128,0.17690347135066986,0.004440938122570515,0.17690347135066986,,,
+,,,,211,2025-10-19 01:35:19.243467,,,,,,,0.15843883156776428,0.0028883747290819883,0.15843883156776428
+0.17135222256183624,0.003989676479250193,0.17135222256183624,12699.0,212,2025-10-19 01:40:08.965704,,,,,,,,,
+,,,,212,2025-10-19 01:43:11.722954,0.156727135181427,0.0025538147892802954,0.156727135181427,0.15579183399677277,0.0026291811373084784,0.15579183399677277,,,
+,,,,212,2025-10-19 01:43:37.830038,,,,,,,0.15933477878570557,0.002612026873975992,0.15933477878570557
+0.12855976819992065,0.001921282964758575,0.12855976819992065,12749.0,213,2025-10-19 01:47:44.564852,,,,,,,,,
+,,,,213,2025-10-19 01:51:42.110016,0.16856016218662262,0.0034150222782045603,0.16856016218662262,0.1707504391670227,0.0023146432358771563,0.1707504391670227,,,
+,,,,213,2025-10-19 01:52:07.749429,,,,,,,0.15781381726264954,0.0022334682289510965,0.15781381726264954
+0.15356950461864471,0.0012053893879055977,0.15356950461864471,12799.0,214,2025-10-19 01:55:02.191247,,,,,,,,,
+,,,,214,2025-10-19 02:00:44.179396,0.16000217199325562,0.0022041983902454376,0.16000217199325562,0.16468177735805511,0.002475140383467078,0.16468177735805511,,,
+,,,,214,2025-10-19 02:01:09.832035,,,,,,,0.16042427718639374,0.0024174859281629324,0.16042427718639374
+0.14822198450565338,0.0015466819750145078,0.14822198450565338,12849.0,215,2025-10-19 02:02:55.383741,,,,,,,,,
+0.20030155777931213,0.0022710717748850584,0.20030155777931213,12899.0,215,2025-10-19 02:07:33.192132,,,,,,,,,
+,,,,215,2025-10-19 02:09:11.913696,0.16303488612174988,0.0021309670992195606,0.16303488612174988,0.1563931554555893,0.0031977936159819365,0.1563931554555893,,,
+,,,,215,2025-10-19 02:09:36.378795,,,,,,,0.1571902185678482,0.0020112984348088503,0.1571902185678482
+0.15543831884860992,0.001289482694119215,0.15543831884860992,12949.0,216,2025-10-19 02:15:15.347900,,,,,,,,,
+,,,,216,2025-10-19 02:17:30.178780,0.16254352033138275,0.002838982967659831,0.16254352033138275,0.15981465578079224,0.0022486934904009104,0.15981465578079224,,,
+,,,,216,2025-10-19 02:17:56.561685,,,,,,,0.15476226806640625,0.0024304755497723818,0.15476226806640625
+0.1456107646226883,0.002141090575605631,0.1456107646226883,12999.0,217,2025-10-19 02:22:49.139959,,,,,,,,,
+,,,,217,2025-10-19 02:26:01.104766,0.16896159946918488,0.0026590563356876373,0.16896159946918488,0.15492884814739227,0.0025735259987413883,0.15492884814739227,,,
+,,,,217,2025-10-19 02:26:27.081400,,,,,,,0.1570759415626526,0.00207215896807611,0.1570759415626526
+0.17146717011928558,0.0022052437998354435,0.17146717011928558,13049.0,218,2025-10-19 02:30:34.246011,,,,,,,,,
+,,,,218,2025-10-19 02:34:49.290049,0.16607902944087982,0.0025095536839216948,0.16607902944087982,0.17426854372024536,0.004155089147388935,0.17426854372024536,,,
+,,,,218,2025-10-19 02:35:13.563005,,,,,,,0.15655450522899628,0.002431109081953764,0.15655450522899628
+0.17363138496875763,0.004015144892036915,0.17363138496875763,13099.0,219,2025-10-19 02:38:08.633172,,,,,,,,,
+,,,,219,2025-10-19 02:43:20.449082,0.1704675555229187,0.0015211075078696012,0.1704675555229187,0.15932059288024902,0.004126868676394224,0.15932059288024902,,,
+,,,,219,2025-10-19 02:43:45.783961,,,,,,,0.15733686089515686,0.0023944820277392864,0.15733686089515686
+0.12692342698574066,0.0034254214260727167,0.12692342698574066,13149.0,220,2025-10-19 02:45:35.329532,,,,,,,,,
+0.16994352638721466,0.0030616249423474073,0.16994352638721466,13199.0,220,2025-10-19 02:50:26.767370,,,,,,,,,
+,,,,220,2025-10-19 02:52:03.128235,0.15483029186725616,0.0019032489508390427,0.15483029186725616,0.16714663803577423,0.004529415164142847,0.16714663803577423,,,
+,,,,220,2025-10-19 02:52:29.270907,,,,,,,0.15939460694789886,0.0023095612414181232,0.15939460694789886
+0.17391926050186157,0.0015588446985930204,0.17391926050186157,13249.0,221,2025-10-19 02:58:10.635968,,,,,,,,,
+,,,,221,2025-10-19 03:00:26.825840,0.16104447841644287,0.0027645002119243145,0.16104447841644287,0.1582772433757782,0.0016758204437792301,0.1582772433757782,,,
+,,,,221,2025-10-19 03:00:52.780747,,,,,,,0.15584105253219604,0.002204886404797435,0.15584105253219604
+0.15830929577350616,0.001987932715564966,0.15830929577350616,13299.0,222,2025-10-19 03:05:52.226554,,,,,,,,,
+,,,,222,2025-10-19 03:09:09.938588,0.15127427875995636,0.0027906124014407396,0.15127427875995636,0.15461023151874542,0.001558235613629222,0.15461023151874542,,,
+,,,,222,2025-10-19 03:09:35.546239,,,,,,,0.15758086740970612,0.0025814836844801903,0.15758086740970612
+0.16339561343193054,0.0015927973436191678,0.16339561343193054,13349.0,223,2025-10-19 03:13:19.156503,,,,,,,,,
+,,,,223,2025-10-19 03:17:30.439004,0.1502877026796341,0.0026099609676748514,0.1502877026796341,0.16646870970726013,0.002619108883664012,0.16646870970726013,,,
+,,,,223,2025-10-19 03:17:55.993664,,,,,,,0.157767191529274,0.0021029356867074966,0.157767191529274
+0.15022802352905273,0.00308098248206079,0.15022802352905273,13399.0,224,2025-10-19 03:20:51.657956,,,,,,,,,
+,,,,224,2025-10-19 03:26:00.038853,0.16364428400993347,0.002423006808385253,0.16364428400993347,0.17625932395458221,0.0030245636589825153,0.17625932395458221,,,
+,,,,224,2025-10-19 03:26:25.933730,,,,,,,0.15353021025657654,0.0021234764717519283,0.15353021025657654
+0.16456322371959686,0.0016165330307558179,0.16456322371959686,13449.0,225,2025-10-19 03:28:21.965437,,,,,,,,,
+0.14877338707447052,0.0014333769213408232,0.14877338707447052,13499.0,225,2025-10-19 03:33:03.342036,,,,,,,,,
+,,,,225,2025-10-19 03:34:39.802907,0.1625591665506363,0.0020724451169371605,0.1625591665506363,0.16316591203212738,0.00313378288410604,0.16316591203212738,,,
+,,,,225,2025-10-19 03:35:05.957128,,,,,,,0.16051407158374786,0.002484131371602416,0.16051407158374786
+0.14373712241649628,0.001480415347032249,0.14373712241649628,13549.0,226,2025-10-19 03:41:09.334278,,,,,,,,,
+,,,,226,2025-10-19 03:43:21.785819,0.16990773379802704,0.00218428042717278,0.16990773379802704,0.15321679413318634,0.0018825629958882928,0.15321679413318634,,,
+,,,,226,2025-10-19 03:43:47.388968,,,,,,,0.15908996760845184,0.0021384439896792173,0.15908996760845184
+0.14189589023590088,0.0010244412114843726,0.14189589023590088,13599.0,227,2025-10-19 03:48:25.736065,,,,,,,,,
+,,,,227,2025-10-19 03:52:10.523837,0.16933734714984894,0.0031518011819571257,0.16933734714984894,0.15420803427696228,0.0015876396792009473,0.15420803427696228,,,
+,,,,227,2025-10-19 03:52:37.072511,,,,,,,0.15664345026016235,0.0021077259443700314,0.15664345026016235
+0.16569064557552338,0.001817994168959558,0.16569064557552338,13649.0,228,2025-10-19 03:56:35.829695,,,,,,,,,
+,,,,228,2025-10-19 04:01:08.540440,0.16091565787792206,0.0024465012829750776,0.16091565787792206,0.15868468582630157,0.0022826760541647673,0.15868468582630157,,,
+,,,,228,2025-10-19 04:01:35.128416,,,,,,,0.15635031461715698,0.0022646666038781404,0.15635031461715698
+0.15213413536548615,0.0031744136940687895,0.15213413536548615,13699.0,229,2025-10-19 04:04:33.273009,,,,,,,,,
+,,,,229,2025-10-19 04:09:35.817397,0.15754516422748566,0.0020675347186625004,0.15754516422748566,0.16522814333438873,0.0022880828473716974,0.16522814333438873,,,
+,,,,229,2025-10-19 04:10:00.417934,,,,,,,0.1556863933801651,0.0026483163237571716,0.1556863933801651
+0.15873973071575165,0.0016257921233773232,0.15873973071575165,13749.0,230,2025-10-19 04:11:48.095486,,,,,,,,,
+0.16988231241703033,0.002246642019599676,0.16988231241703033,13799.0,230,2025-10-19 04:16:33.584249,,,,,,,,,
+,,,,230,2025-10-19 04:18:09.410427,0.15644896030426025,0.00278596393764019,0.15644896030426025,0.15372811257839203,0.001991816097870469,0.15372811257839203,,,
+,,,,230,2025-10-19 04:18:34.287221,,,,,,,0.15902122855186462,0.0021825432777404785,0.15902122855186462
+0.16315561532974243,0.003379079280421138,0.16315561532974243,13849.0,231,2025-10-19 04:24:35.516047,,,,,,,,,
+,,,,231,2025-10-19 04:26:50.123940,0.16337013244628906,0.0027724471874535084,0.16337013244628906,0.15300872921943665,0.001343851094134152,0.15300872921943665,,,
+,,,,231,2025-10-19 04:27:15.554756,,,,,,,0.15773198008537292,0.0022806792985647917,0.15773198008537292
+0.16423796117305756,0.001117028994485736,0.16423796117305756,13899.0,232,2025-10-19 04:32:11.044846,,,,,,,,,
+,,,,232,2025-10-19 04:35:17.586361,0.1668740063905716,0.0021264562383294106,0.1668740063905716,0.1593424528837204,0.0026267273351550102,0.1593424528837204,,,
+,,,,232,2025-10-19 04:35:43.561596,,,,,,,0.15370036661624908,0.0021040765568614006,0.15370036661624908
+0.1631428301334381,0.0015719691291451454,0.1631428301334381,13949.0,233,2025-10-19 04:39:37.119434,,,,,,,,,
+,,,,233,2025-10-19 04:44:03.983580,0.14730162918567657,0.0019603781402111053,0.14730162918567657,0.16810432076454163,0.0020672522950917482,0.16810432076454163,,,
+,,,,233,2025-10-19 04:44:32.365755,,,,,,,0.15509842336177826,0.002222731476649642,0.15509842336177826
+0.16063642501831055,0.0018414999358356,0.16063642501831055,13999.0,234,2025-10-19 04:47:22.162988,,,,,,,,,
+,,,,234,2025-10-19 04:52:24.807965,0.15373963117599487,0.0032751988619565964,0.15373963117599487,0.16295479238033295,0.0024058553390204906,0.16295479238033295,,,
+,,,,234,2025-10-19 04:52:52.586083,,,,,,,0.15972751379013062,0.0028006669599562883,0.15972751379013062
+0.16952358186244965,0.0014245096826925874,0.16952358186244965,14049.0,235,2025-10-19 04:54:39.595425,,,,,,,,,
+0.1391759216785431,0.002971117850393057,0.1391759216785431,14099.0,235,2025-10-19 04:59:23.437794,,,,,,,,,
+,,,,235,2025-10-19 05:01:00.717025,0.1625097393989563,0.002044430933892727,0.1625097393989563,0.15744781494140625,0.0023928950540721416,0.15744781494140625,,,
+,,,,235,2025-10-19 05:01:25.596446,,,,,,,0.1598197966814041,0.002329663373529911,0.1598197966814041
+0.12843137979507446,0.0009192535071633756,0.12843137979507446,14149.0,236,2025-10-19 05:07:16.187543,,,,,,,,,
+,,,,236,2025-10-19 05:09:28.429860,0.18079812824726105,0.002360847545787692,0.18079812824726105,0.15239223837852478,0.0027051407378166914,0.15239223837852478,,,
+,,,,236,2025-10-19 05:10:15.633353,,,,,,,0.15841880440711975,0.0021872592624276876,0.15841880440711975
+0.14382711052894592,0.003831262933090329,0.14382711052894592,14199.0,237,2025-10-19 05:15:29.111769,,,,,,,,,
+,,,,237,2025-10-19 05:18:38.543796,0.15512587130069733,0.0021583265624940395,0.15512587130069733,0.15674887597560883,0.0021759665105491877,0.15674887597560883,,,
+,,,,237,2025-10-19 05:19:04.966564,,,,,,,0.1592789590358734,0.0025839568115770817,0.1592789590358734
+0.1453493982553482,0.004220013041049242,0.1453493982553482,14249.0,238,2025-10-19 05:23:02.868156,,,,,,,,,
+,,,,238,2025-10-19 05:27:17.254282,0.15356968343257904,0.0018281900556758046,0.15356968343257904,0.15839825570583344,0.002917178440839052,0.15839825570583344,,,
+,,,,238,2025-10-19 05:27:42.884937,,,,,,,0.15646211802959442,0.0022796406410634518,0.15646211802959442
+0.14877964556217194,0.005397900473326445,0.14877964556217194,14299.0,239,2025-10-19 05:30:24.857829,,,,,,,,,
+,,,,239,2025-10-19 05:35:58.235889,0.14340895414352417,0.001221426296979189,0.14340895414352417,0.17371484637260437,0.0025060030166059732,0.17371484637260437,,,
+,,,,239,2025-10-19 05:36:23.722966,,,,,,,0.15478211641311646,0.0023054799530655146,0.15478211641311646
+0.17045022547245026,0.0034910838585346937,0.17045022547245026,14349.0,240,2025-10-19 05:38:22.286246,,,,,,,,,
+0.17085784673690796,0.0017620916478335857,0.17085784673690796,14399.0,240,2025-10-19 05:42:57.375157,,,,,,,,,
+,,,,240,2025-10-19 05:44:28.608422,0.1646454930305481,0.0027568810619413853,0.1646454930305481,0.15320944786071777,0.0031845627818256617,0.15320944786071777,,,
+,,,,240,2025-10-19 05:44:53.321828,,,,,,,0.15997062623500824,0.0021439786069095135,0.15997062623500824
+0.16853290796279907,0.0017506902804598212,0.16853290796279907,14449.0,241,2025-10-19 05:50:56.125298,,,,,,,,,
+,,,,241,2025-10-19 05:53:09.632776,0.1708424687385559,0.002792221959680319,0.1708424687385559,0.16332124173641205,0.0016869547544047236,0.16332124173641205,,,
+,,,,241,2025-10-19 05:53:35.786265,,,,,,,0.1538388729095459,0.0021996935829520226,0.1538388729095459
+0.14130574464797974,0.001734185148961842,0.14130574464797974,14499.0,242,2025-10-19 05:58:40.760264,,,,,,,,,
+,,,,242,2025-10-19 06:01:53.926596,0.15878279507160187,0.0026885780971497297,0.15878279507160187,0.162575364112854,0.0019751933868974447,0.162575364112854,,,
+,,,,242,2025-10-19 06:02:19.865763,,,,,,,0.15439598262310028,0.002509373938664794,0.15439598262310028
+0.15467046201229095,0.0015876850811764598,0.15467046201229095,14549.0,243,2025-10-19 06:06:18.720218,,,,,,,,,
+,,,,243,2025-10-19 06:10:25.486016,0.16117100417613983,0.001494157942943275,0.16117100417613983,0.16058985888957977,0.0030550239607691765,0.16058985888957977,,,
+,,,,243,2025-10-19 06:10:50.413608,,,,,,,0.15342168509960175,0.0020271765533834696,0.15342168509960175
+0.13931052386760712,0.0013460282934829593,0.13931052386760712,14599.0,244,2025-10-19 06:13:38.525644,,,,,,,,,
+,,,,244,2025-10-19 06:19:21.683757,0.15932907164096832,0.0021101213060319424,0.15932907164096832,0.15828658640384674,0.001648839097470045,0.15828658640384674,,,
+,,,,244,2025-10-19 06:19:47.330381,,,,,,,0.1563829928636551,0.0021122999023646116,0.1563829928636551
+0.17800886929035187,0.00526049267500639,0.17800886929035187,14649.0,245,2025-10-19 06:21:38.936267,,,,,,,,,
+0.16156430542469025,0.0018420728156343102,0.16156430542469025,14699.0,245,2025-10-19 06:26:21.762759,,,,,,,,,
+,,,,245,2025-10-19 06:27:59.278656,0.15977169573307037,0.002478068694472313,0.15977169573307037,0.16759666800498962,0.0026106867007911205,0.16759666800498962,,,
+,,,,245,2025-10-19 06:28:25.992116,,,,,,,0.16057778894901276,0.0022299811244010925,0.16057778894901276
+0.1616138368844986,0.0017531821504235268,0.1616138368844986,14749.0,246,2025-10-19 06:34:26.234154,,,,,,,,,
+,,,,246,2025-10-19 06:36:38.290747,0.1533738672733307,0.0023986801970750093,0.1533738672733307,0.15598700940608978,0.002837764797732234,0.15598700940608978,,,
+,,,,246,2025-10-19 06:37:04.190117,,,,,,,0.15941046178340912,0.00274068396538496,0.15941046178340912
+0.16275538504123688,0.006020145956426859,0.16275538504123688,14799.0,247,2025-10-19 06:41:49.110434,,,,,,,,,
+,,,,247,2025-10-19 06:45:14.951294,0.1643614023923874,0.0029272795654833317,0.1643614023923874,0.16199225187301636,0.002432834589853883,0.16199225187301636,,,
+,,,,247,2025-10-19 06:45:41.093167,,,,,,,0.1546848714351654,0.0023134304210543633,0.1546848714351654
+0.1674932837486267,0.0014176183613017201,0.1674932837486267,14849.0,248,2025-10-19 06:49:34.437216,,,,,,,,,
+,,,,248,2025-10-19 06:53:48.775242,0.15815341472625732,0.0019015466095879674,0.15815341472625732,0.15836873650550842,0.0012092527467757463,0.15836873650550842,,,
+,,,,248,2025-10-19 06:54:15.044544,,,,,,,0.15888969600200653,0.002384807914495468,0.15888969600200653
+0.16645720601081848,0.00126479787286371,0.16645720601081848,14899.0,249,2025-10-19 06:57:07.266422,,,,,,,,,
+,,,,249,2025-10-19 07:02:22.828463,0.15112660825252533,0.002227592281997204,0.15112660825252533,0.161949023604393,0.002218324225395918,0.161949023604393,,,
+,,,,249,2025-10-19 07:02:49.002377,,,,,,,0.15727367997169495,0.0021740051452070475,0.15727367997169495
+0.17989331483840942,0.0019847662188112736,0.17989331483840942,14949.0,250,2025-10-19 07:04:40.957606,,,,,,,,,
+0.15343120694160461,0.0020953610073775053,0.15343120694160461,14999.0,250,2025-10-19 07:09:09.420092,,,,,,,,,
+,,,,250,2025-10-19 07:10:42.880854,0.15951615571975708,0.0024833925999701023,0.15951615571975708,0.1603553593158722,0.002132551744580269,0.1603553593158722,,,
+,,,,250,2025-10-19 07:11:08.319422,,,,,,,0.15932822227478027,0.002173261484131217,0.15932822227478027
+0.15019212663173676,0.0009278865181840956,0.15019212663173676,15049.0,251,2025-10-19 07:17:10.575769,,,,,,,,,
+,,,,251,2025-10-19 07:19:26.127459,0.15857917070388794,0.0025283286813646555,0.15857917070388794,0.15807649493217468,0.0022417346481233835,0.15807649493217468,,,
+,,,,251,2025-10-19 07:19:52.742723,,,,,,,0.15789589285850525,0.0022017310839146376,0.15789589285850525
+0.13677175343036652,0.0031796684488654137,0.13677175343036652,15099.0,252,2025-10-19 07:24:42.846062,,,,,,,,,
+,,,,252,2025-10-19 07:27:52.917185,0.1550845354795456,0.0020272035617381334,0.1550845354795456,0.15971799194812775,0.0024344343692064285,0.15971799194812775,,,
+,,,,252,2025-10-19 07:28:19.886650,,,,,,,0.15743672847747803,0.002392251044511795,0.15743672847747803
+0.17721423506736755,0.0021766801364719868,0.17721423506736755,15149.0,253,2025-10-19 07:32:17.445155,,,,,,,,,
+,,,,253,2025-10-19 07:36:37.394128,0.1481722593307495,0.0019187141442671418,0.1481722593307495,0.14766882359981537,0.002518663415685296,0.14766882359981537,,,
+,,,,253,2025-10-19 07:37:28.939820,,,,,,,0.1538681834936142,0.00204128073528409,0.1538681834936142
+0.13641411066055298,0.005824059713631868,0.13641411066055298,15199.0,254,2025-10-19 07:40:13.874193,,,,,,,,,
+,,,,254,2025-10-19 07:45:25.946839,0.16845175623893738,0.0019817810971289873,0.16845175623893738,0.16047336161136627,0.0018615758744999766,0.16047336161136627,,,
+,,,,254,2025-10-19 07:45:51.920095,,,,,,,0.15336938202381134,0.0021986470092087984,0.15336938202381134
+0.1471739411354065,0.0010893996804952621,0.1471739411354065,15249.0,255,2025-10-19 07:47:41.920545,,,,,,,,,
+0.13876301050186157,0.0013300086138769984,0.13876301050186157,15299.0,255,2025-10-19 07:52:14.383244,,,,,,,,,
+,,,,255,2025-10-19 07:53:50.526758,0.1472596675157547,0.0017741805640980601,0.1472596675157547,0.16588081419467926,0.0018988854717463255,0.16588081419467926,,,
+,,,,255,2025-10-19 07:54:16.140492,,,,,,,0.15601353347301483,0.0021605086512863636,0.15601353347301483
+0.15548375248908997,0.0010826213983818889,0.15548375248908997,15349.0,256,2025-10-19 07:59:59.247619,,,,,,,,,
+,,,,256,2025-10-19 08:02:15.008350,0.15506014227867126,0.002451120177283883,0.15506014227867126,0.15191492438316345,0.001853109453804791,0.15191492438316345,,,
+,,,,256,2025-10-19 08:03:04.885840,,,,,,,0.15352082252502441,0.0024330446030944586,0.15352082252502441
+0.13860063254833221,0.0010195260401815176,0.13860063254833221,15399.0,257,2025-10-19 08:07:59.858076,,,,,,,,,
+,,,,257,2025-10-19 08:11:18.755432,0.15519306063652039,0.0016178281512111425,0.15519306063652039,0.15089160203933716,0.002603144384920597,0.15089160203933716,,,
+,,,,257,2025-10-19 08:12:07.805739,,,,,,,0.15504780411720276,0.0023892575409263372,0.15504780411720276
+0.1514427810907364,0.0014487202279269695,0.1514427810907364,15449.0,258,2025-10-19 08:16:01.903260,,,,,,,,,
+,,,,258,2025-10-19 08:20:02.442725,0.16164293885231018,0.0028019489254802465,0.16164293885231018,0.15931157767772675,0.00276951608248055,0.15931157767772675,,,
+,,,,258,2025-10-19 08:20:27.696162,,,,,,,0.15609656274318695,0.002434773603454232,0.15609656274318695
+0.1746576577425003,0.0023739300668239594,0.1746576577425003,15499.0,259,2025-10-19 08:23:14.458787,,,,,,,,,
+,,,,259,2025-10-19 08:29:04.901336,0.16017986834049225,0.0012447017943486571,0.16017986834049225,0.16740399599075317,0.0024327756837010384,0.16740399599075317,,,
+,,,,259,2025-10-19 08:29:31.806180,,,,,,,0.15729616582393646,0.0022078007459640503,0.15729616582393646
+0.15661077201366425,0.00182059477083385,0.15661077201366425,15549.0,260,2025-10-19 08:31:28.579994,,,,,,,,,
+0.15216895937919617,0.0012442467268556356,0.15216895937919617,15599.0,260,2025-10-19 08:36:19.272736,,,,,,,,,
+,,,,260,2025-10-19 08:37:50.159253,0.16075509786605835,0.002455198671668768,0.16075509786605835,0.16764160990715027,0.0033501472789794207,0.16764160990715027,,,
+,,,,260,2025-10-19 08:38:16.740900,,,,,,,0.15901918709278107,0.002135124523192644,0.15901918709278107
+0.15207843482494354,0.0014870332088321447,0.15207843482494354,15649.0,261,2025-10-19 08:43:52.610728,,,,,,,,,
+,,,,261,2025-10-19 08:46:26.030798,0.16158029437065125,0.0015430210623890162,0.16158029437065125,0.16345937550067902,0.0020804894156754017,0.16345937550067902,,,
+,,,,261,2025-10-19 08:46:52.253389,,,,,,,0.15032513439655304,0.0020099752582609653,0.15032513439655304
+0.1671750694513321,0.0011504079448059201,0.1671750694513321,15699.0,262,2025-10-19 08:51:59.409944,,,,,,,,,
+,,,,262,2025-10-19 08:55:11.406596,0.1584005355834961,0.0015350038884207606,0.1584005355834961,0.15775449573993683,0.0016682783607393503,0.15775449573993683,,,
+,,,,262,2025-10-19 08:55:36.881920,,,,,,,0.15438008308410645,0.002319489372894168,0.15438008308410645
+0.13714931905269623,0.002099034609273076,0.13714931905269623,15749.0,263,2025-10-19 08:59:25.570020,,,,,,,,,
+,,,,263,2025-10-19 09:03:43.469930,0.15814273059368134,0.001307467115111649,0.15814273059368134,0.15412066876888275,0.002595258178189397,0.15412066876888275,,,
+,,,,263,2025-10-19 09:04:10.055273,,,,,,,0.15610311925411224,0.002066229470074177,0.15610311925411224
+0.15823912620544434,0.0021859784610569477,0.15823912620544434,15799.0,264,2025-10-19 09:07:06.238426,,,,,,,,,
+,,,,264,2025-10-19 09:12:10.594356,0.15508219599723816,0.001930785016156733,0.15508219599723816,0.15920256078243256,0.001694375998340547,0.15920256078243256,,,
+,,,,264,2025-10-19 09:12:35.943132,,,,,,,0.1577237993478775,0.00241688615642488,0.1577237993478775
+0.16111227869987488,0.0024070460349321365,0.16111227869987488,15849.0,265,2025-10-19 09:14:38.865927,,,,,,,,,
+0.16316646337509155,0.0057225595228374004,0.16316646337509155,15899.0,265,2025-10-19 09:19:20.270844,,,,,,,,,
+,,,,265,2025-10-19 09:20:56.695465,0.15696336328983307,0.002627864247187972,0.15696336328983307,0.1689230352640152,0.0026370659470558167,0.1689230352640152,,,
+,,,,265,2025-10-19 09:21:23.578048,,,,,,,0.15343210101127625,0.0025382041931152344,0.15343210101127625
+0.13093675673007965,0.005642378237098455,0.13093675673007965,15949.0,266,2025-10-19 09:27:00.604276,,,,,,,,,
+,,,,266,2025-10-19 09:29:22.447889,0.15660753846168518,0.0021104025654494762,0.15660753846168518,0.15741755068302155,0.002625685418024659,0.15741755068302155,,,
+,,,,266,2025-10-19 09:29:48.301123,,,,,,,0.15150152146816254,0.002577705541625619,0.15150152146816254
+0.14904431998729706,0.00215722294524312,0.14904431998729706,15999.0,267,2025-10-19 09:34:24.885981,,,,,,,,,
+,,,,267,2025-10-19 09:37:39.766015,0.15315841138362885,0.0017610788345336914,0.15315841138362885,0.16874083876609802,0.003875100752338767,0.16874083876609802,,,
+,,,,267,2025-10-19 09:38:05.715020,,,,,,,0.15626583993434906,0.002432827837765217,0.15626583993434906
+0.17776520550251007,0.0021439825650304556,0.17776520550251007,16049.0,268,2025-10-19 09:41:55.024789,,,,,,,,,
+,,,,268,2025-10-19 09:46:11.503272,0.16497954726219177,0.0027150921523571014,0.16497954726219177,0.16032293438911438,0.0011924708960577846,0.16032293438911438,,,
+,,,,268,2025-10-19 09:46:38.433111,,,,,,,0.15505370497703552,0.0021118794102221727,0.15505370497703552
+0.17106890678405762,0.001276751863770187,0.17106890678405762,16099.0,269,2025-10-19 09:49:14.258451,,,,,,,,,
+,,,,269,2025-10-19 09:54:29.583243,0.16640682518482208,0.0033748787827789783,0.16640682518482208,0.160623699426651,0.0011126440949738026,0.160623699426651,,,
+,,,,269,2025-10-19 09:54:54.228071,,,,,,,0.1560509204864502,0.001842210884205997,0.1560509204864502
+0.15865649282932281,0.0016103392699733377,0.15865649282932281,16149.0,270,2025-10-19 09:56:53.248571,,,,,,,,,
+0.16063682734966278,0.0014003791147843003,0.16063682734966278,16199.0,270,2025-10-19 10:01:36.836753,,,,,,,,,
+,,,,270,2025-10-19 10:03:13.663785,0.16734819114208221,0.003170373383909464,0.16734819114208221,0.17088231444358826,0.0015161022311076522,0.17088231444358826,,,
+,,,,270,2025-10-19 10:03:39.857328,,,,,,,0.15498553216457367,0.0023006226401776075,0.15498553216457367
+0.15400543808937073,0.0013716659741476178,0.15400543808937073,16249.0,271,2025-10-19 10:09:23.222679,,,,,,,,,
+,,,,271,2025-10-19 10:11:41.206173,0.1549471616744995,0.0015707564307376742,0.1549471616744995,0.16599729657173157,0.0023121547419577837,0.16599729657173157,,,
+,,,,271,2025-10-19 10:12:06.462481,,,,,,,0.1559649109840393,0.002137896604835987,0.1559649109840393
+0.15353335440158844,0.002193756867200136,0.15353335440158844,16299.0,272,2025-10-19 10:16:45.155402,,,,,,,,,
+,,,,272,2025-10-19 10:20:14.742146,0.15798300504684448,0.002294637728482485,0.15798300504684448,0.1609121412038803,0.0036466694436967373,0.1609121412038803,,,
+,,,,272,2025-10-19 10:20:40.898806,,,,,,,0.15452885627746582,0.0023933302145451307,0.15452885627746582
+0.13785384595394135,0.0011126743629574776,0.13785384595394135,16349.0,273,2025-10-19 10:24:32.633963,,,,,,,,,
+,,,,273,2025-10-19 10:28:43.490057,0.15355604887008667,0.001870174310170114,0.15355604887008667,0.1659451723098755,0.002320077270269394,0.1659451723098755,,,
+,,,,273,2025-10-19 10:29:12.576530,,,,,,,0.15585675835609436,0.0018280519871041179,0.15585675835609436
+0.13848012685775757,0.0009052861132659018,0.13848012685775757,16399.0,274,2025-10-19 10:32:16.544510,,,,,,,,,
+,,,,274,2025-10-19 10:37:30.821104,0.15935802459716797,0.0023276458960026503,0.15935802459716797,0.16203966736793518,0.002793987048789859,0.16203966736793518,,,
+,,,,274,2025-10-19 10:37:56.257636,,,,,,,0.15156224370002747,0.0020897884387522936,0.15156224370002747
+0.13949009776115417,0.0009603736107237637,0.13949009776115417,16449.0,275,2025-10-19 10:39:49.424796,,,,,,,,,
+0.14575955271720886,0.0012577582383528352,0.14575955271720886,16499.0,275,2025-10-19 10:44:07.145969,,,,,,,,,
+,,,,275,2025-10-19 10:45:41.938686,0.1622275412082672,0.0017971504712477326,0.1622275412082672,0.14318998157978058,0.0019405026687309146,0.14318998157978058,,,
+,,,,275,2025-10-19 10:46:29.821657,,,,,,,0.1540607064962387,0.002508369507268071,0.1540607064962387
+0.145116925239563,0.0009399503469467163,0.145116925239563,16549.0,276,2025-10-19 10:52:23.645880,,,,,,,,,
+,,,,276,2025-10-19 10:54:41.744294,0.1627887338399887,0.002135468879714608,0.1627887338399887,0.14985117316246033,0.0015712609747424722,0.14985117316246033,,,
+,,,,276,2025-10-19 10:55:08.921751,,,,,,,0.15671706199645996,0.0024207697715610266,0.15671706199645996
+0.16458606719970703,0.0015436433022841811,0.16458606719970703,16599.0,277,2025-10-19 11:00:09.590193,,,,,,,,,
+,,,,277,2025-10-19 11:03:12.249441,0.16180269420146942,0.0022673271596431732,0.16180269420146942,0.15974289178848267,0.0021320953965187073,0.15974289178848267,,,
+,,,,277,2025-10-19 11:03:39.557123,,,,,,,0.15658052265644073,0.002251923317089677,0.15658052265644073
+0.13665901124477386,0.001245412277057767,0.13665901124477386,16649.0,278,2025-10-19 11:07:30.980588,,,,,,,,,
+,,,,278,2025-10-19 11:11:42.401984,0.14916987717151642,0.0017429445870220661,0.14916987717151642,0.1656719148159027,0.004165299236774445,0.1656719148159027,,,
+,,,,278,2025-10-19 11:12:08.885625,,,,,,,0.15180565416812897,0.002214361447840929,0.15180565416812897
+0.17298221588134766,0.0019568188581615686,0.17298221588134766,16699.0,279,2025-10-19 11:14:56.227228,,,,,,,,,
+,,,,279,2025-10-19 11:20:00.958145,0.15644186735153198,0.0013569134753197432,0.15644186735153198,0.15531907975673676,0.001967518823221326,0.15531907975673676,,,
+,,,,279,2025-10-19 11:20:26.483512,,,,,,,0.15481558442115784,0.0022991104051470757,0.15481558442115784
+0.13632945716381073,0.0010614198399707675,0.13632945716381073,16749.0,280,2025-10-19 11:22:16.078995,,,,,,,,,
+0.15313054621219635,0.002373061841353774,0.15313054621219635,16799.0,280,2025-10-19 11:26:42.461719,,,,,,,,,
+,,,,280,2025-10-19 11:28:20.650807,0.17129814624786377,0.0037776429671794176,0.17129814624786377,0.16756723821163177,0.002402670681476593,0.16756723821163177,,,
+,,,,280,2025-10-19 11:28:46.624982,,,,,,,0.15386471152305603,0.0024709992576390505,0.15386471152305603
+0.16131947934627533,0.0025358283892273903,0.16131947934627533,16849.0,281,2025-10-19 11:34:18.971809,,,,,,,,,
+,,,,281,2025-10-19 11:36:51.937684,0.15472400188446045,0.0024999186862260103,0.15472400188446045,0.1600821316242218,0.0028086230158805847,0.1600821316242218,,,
+,,,,281,2025-10-19 11:37:18.837497,,,,,,,0.1553761065006256,0.002396038733422756,0.1553761065006256
+0.15268637239933014,0.00247448543086648,0.15268637239933014,16899.0,282,2025-10-19 11:42:08.883562,,,,,,,,,
+,,,,282,2025-10-19 11:45:22.876589,0.14802038669586182,0.0027131913229823112,0.14802038669586182,0.16161614656448364,0.0014586058678105474,0.16161614656448364,,,
+,,,,282,2025-10-19 11:45:50.201940,,,,,,,0.15322427451610565,0.0022967231925576925,0.15322427451610565
+0.1862255483865738,0.0015014425152912736,0.1862255483865738,16949.0,283,2025-10-19 11:49:29.998382,,,,,,,,,
+,,,,283,2025-10-19 11:53:59.775304,0.15516974031925201,0.0016977335326373577,0.15516974031925201,0.15725064277648926,0.002914122771471739,0.15725064277648926,,,
+,,,,283,2025-10-19 11:54:26.859258,,,,,,,0.1562669724225998,0.00253316480666399,0.1562669724225998
+0.1283322274684906,0.0017142761498689651,0.1283322274684906,16999.0,284,2025-10-19 11:57:22.191640,,,,,,,,,
+,,,,284,2025-10-19 12:02:31.675765,0.15377408266067505,0.0029302325565367937,0.15377408266067505,0.1664714366197586,0.002478840760886669,0.1664714366197586,,,
+,,,,284,2025-10-19 12:02:58.162569,,,,,,,0.15080636739730835,0.002483416348695755,0.15080636739730835
+0.13224492967128754,0.0014740610495209694,0.13224492967128754,17049.0,285,2025-10-19 12:04:42.636419,,,,,,,,,
+0.13108354806900024,0.00327779958024621,0.13108354806900024,17099.0,285,2025-10-19 12:09:18.088333,,,,,,,,,
+,,,,285,2025-10-19 12:10:53.600049,0.15052562952041626,0.0039050329942256212,0.15052562952041626,0.1564520299434662,0.002219804096966982,0.1564520299434662,,,
+,,,,285,2025-10-19 12:11:19.920025,,,,,,,0.1530669629573822,0.0023639951832592487,0.1530669629573822
+0.16802814602851868,0.0017197561683133245,0.16802814602851868,17149.0,286,2025-10-19 12:17:15.387334,,,,,,,,,
+,,,,286,2025-10-19 12:19:43.550007,0.15836583077907562,0.0030744336545467377,0.15836583077907562,0.15629015862941742,0.001842124736867845,0.15629015862941742,,,
+,,,,286,2025-10-19 12:20:09.630719,,,,,,,0.15136289596557617,0.0021146798972040415,0.15136289596557617
+0.16279424726963043,0.001414966071024537,0.16279424726963043,17199.0,287,2025-10-19 12:25:04.439975,,,,,,,,,
+,,,,287,2025-10-19 12:28:18.855843,0.14265176653862,0.0037496553268283606,0.14265176653862,0.16330482065677643,0.0028562177903950214,0.16330482065677643,,,
+,,,,287,2025-10-19 12:28:45.853035,,,,,,,0.15293526649475098,0.0022227053996175528,0.15293526649475098
+0.15640297532081604,0.0019062543287873268,0.15640297532081604,17249.0,288,2025-10-19 12:32:30.755570,,,,,,,,,
+,,,,288,2025-10-19 12:36:40.197752,0.15258868038654327,0.0012983923079445958,0.15258868038654327,0.15545862913131714,0.0028565512038767338,0.15545862913131714,,,
+,,,,288,2025-10-19 12:37:06.744387,,,,,,,0.15416772663593292,0.0020449934527277946,0.15416772663593292
+0.19436746835708618,0.004705247934907675,0.19436746835708618,17299.0,289,2025-10-19 12:39:54.553169,,,,,,,,,
+,,,,289,2025-10-19 12:45:23.988569,0.16115052998065948,0.0013345335610210896,0.16115052998065948,0.15579374134540558,0.002273264341056347,0.15579374134540558,,,
+,,,,289,2025-10-19 12:45:49.941727,,,,,,,0.15589608252048492,0.002358971629291773,0.15589608252048492
+0.18995997309684753,0.0012676822952926159,0.18995997309684753,17349.0,290,2025-10-19 12:47:31.919391,,,,,,,,,
+0.1575414389371872,0.0044046384282410145,0.1575414389371872,17399.0,290,2025-10-19 12:52:05.211162,,,,,,,,,
+,,,,290,2025-10-19 12:53:46.902278,0.16301192343235016,0.0014032763428986073,0.16301192343235016,0.16299036145210266,0.002100979210808873,0.16299036145210266,,,
+,,,,290,2025-10-19 12:54:14.030184,,,,,,,0.15285402536392212,0.0023277522996068,0.15285402536392212
+0.1594647765159607,0.0009280936210416257,0.1594647765159607,17449.0,291,2025-10-19 12:59:42.523319,,,,,,,,,
+,,,,291,2025-10-19 13:02:06.733078,0.15978917479515076,0.0014204845065250993,0.15978917479515076,0.15081873536109924,0.0017823089146986604,0.15081873536109924,,,
+,,,,291,2025-10-19 13:02:34.154399,,,,,,,0.15627816319465637,0.0020566126331686974,0.15627816319465637
+0.1457180678844452,0.0013486008392646909,0.1457180678844452,17499.0,292,2025-10-19 13:07:23.211933,,,,,,,,,
+,,,,292,2025-10-19 13:10:42.152821,0.15527580678462982,0.0017824420938268304,0.15527580678462982,0.14573673903942108,0.0022669723257422447,0.14573673903942108,,,
+,,,,292,2025-10-19 13:11:34.197085,,,,,,,0.15036854147911072,0.0021083320025354624,0.15036854147911072
+0.14517439901828766,0.0036496170796453953,0.14517439901828766,17549.0,293,2025-10-19 13:15:26.414174,,,,,,,,,
+,,,,293,2025-10-19 13:19:37.014302,0.1546911746263504,0.0033430519979447126,0.1546911746263504,0.14692620933055878,0.0021755953785032034,0.14692620933055878,,,
+,,,,293,2025-10-19 13:20:26.114929,,,,,,,0.1504330337047577,0.0023522241972386837,0.1504330337047577
+0.1544104516506195,0.0016082471702247858,0.1544104516506195,17599.0,294,2025-10-19 13:23:35.955795,,,,,,,,,
+,,,,294,2025-10-19 13:28:43.013903,0.1548854112625122,0.002222752431407571,0.1548854112625122,0.15798281133174896,0.0016889855032786727,0.15798281133174896,,,
+,,,,294,2025-10-19 13:29:09.198425,,,,,,,0.15208953619003296,0.0021283116657286882,0.15208953619003296
+0.15076908469200134,0.001548478496260941,0.15076908469200134,17649.0,295,2025-10-19 13:31:10.996954,,,,,,,,,
+0.15114319324493408,0.001107524149119854,0.15114319324493408,17699.0,295,2025-10-19 13:36:01.850804,,,,,,,,,
+,,,,295,2025-10-19 13:37:39.223985,0.15306194126605988,0.0027668022084981203,0.15306194126605988,0.16599822044372559,0.0029022404924035072,0.16599822044372559,,,
+,,,,295,2025-10-19 13:38:04.143951,,,,,,,0.15283262729644775,0.002014855155721307,0.15283262729644775
+0.13309624791145325,0.0015662399819120765,0.13309624791145325,17749.0,296,2025-10-19 13:44:08.068365,,,,,,,,,
+,,,,296,2025-10-19 13:46:24.501265,0.15437060594558716,0.0018159962492063642,0.15437060594558716,0.16301782429218292,0.0019968871492892504,0.16301782429218292,,,
+,,,,296,2025-10-19 13:46:51.653336,,,,,,,0.1553204506635666,0.00201571942307055,0.1553204506635666
+0.14417412877082825,0.0021894718520343304,0.14417412877082825,17799.0,297,2025-10-19 13:51:50.662778,,,,,,,,,
+,,,,297,2025-10-19 13:54:56.269281,0.1554863303899765,0.003207086818292737,0.1554863303899765,0.15583465993404388,0.002054473152384162,0.15583465993404388,,,
+,,,,297,2025-10-19 13:55:23.289209,,,,,,,0.15362603962421417,0.002152827335521579,0.15362603962421417
+0.18910692632198334,0.0038023293018341064,0.18910692632198334,17849.0,298,2025-10-19 13:59:31.683278,,,,,,,,,
+,,,,298,2025-10-19 14:04:03.569408,0.15509122610092163,0.0027151773683726788,0.15509122610092163,0.16159944236278534,0.0020878759678453207,0.16159944236278534,,,
+,,,,298,2025-10-19 14:04:29.875064,,,,,,,0.15058980882167816,0.002103283768519759,0.15058980882167816
+0.16249240934848785,0.0013956304173916578,0.16249240934848785,17899.0,299,2025-10-19 14:07:19.858849,,,,,,,,,
+,,,,299,2025-10-19 14:12:41.312799,0.16446994245052338,0.0028797502163797617,0.16446994245052338,0.15752947330474854,0.0027006901800632477,0.15752947330474854,,,
+,,,,299,2025-10-19 14:13:07.702560,,,,,,,0.15626086294651031,0.0022264127619564533,0.15626086294651031
+0.16028176248073578,0.001817431766539812,0.16028176248073578,17949.0,300,2025-10-19 14:15:00.491773,,,,,,,,,
+0.1361355185508728,0.004295235965400934,0.1361355185508728,17999.0,300,2025-10-19 14:20:11.256657,,,,,,,,,
+,,,,300,2025-10-19 14:21:50.573830,0.15872330963611603,0.0021581307519227266,0.15872330963611603,0.15298834443092346,0.0025056907907128334,0.15298834443092346,,,
+,,,,300,2025-10-19 14:22:17.825002,,,,,,,0.14927299320697784,0.002113340888172388,0.14927299320697784
+0.18490442633628845,0.005333559587597847,0.18490442633628845,18049.0,301,2025-10-19 14:28:21.660416,,,,,,,,,
+,,,,301,2025-10-19 14:30:37.194759,0.1455891728401184,0.0013732931111007929,0.1455891728401184,0.16782806813716888,0.004808351397514343,0.16782806813716888,,,
+,,,,301,2025-10-19 14:31:05.530425,,,,,,,0.15149421989917755,0.0024283817037940025,0.15149421989917755
+0.14222529530525208,0.0017727065132930875,0.14222529530525208,18099.0,302,2025-10-19 14:35:54.821009,,,,,,,,,
+,,,,302,2025-10-19 14:38:57.333855,0.15150347352027893,0.0017345146043226123,0.15150347352027893,0.14571513235569,0.0014773140428587794,0.14571513235569,,,
+,,,,302,2025-10-19 14:39:44.371110,,,,,,,0.15878716111183167,0.0026722713373601437,0.15878716111183167
+0.15542484819889069,0.0010828174417838454,0.15542484819889069,18149.0,303,2025-10-19 14:43:41.982708,,,,,,,,,
+,,,,303,2025-10-19 14:48:00.841562,0.15553529560565948,0.002836687723174691,0.15553529560565948,0.1618189513683319,0.0020548005122691393,0.1618189513683319,,,
+,,,,303,2025-10-19 14:48:27.796775,,,,,,,0.1536625474691391,0.002386315492913127,0.1536625474691391
+0.17199259996414185,0.002027147449553013,0.17199259996414185,18199.0,304,2025-10-19 14:51:24.756983,,,,,,,,,
+,,,,304,2025-10-19 14:56:43.350842,0.15344250202178955,0.004872602876275778,0.15344250202178955,0.16102558374404907,0.001961606554687023,0.16102558374404907,,,
+,,,,304,2025-10-19 14:57:10.937827,,,,,,,0.15274320542812347,0.002254204824566841,0.15274320542812347
+0.1477556675672531,0.0010182482656091452,0.1477556675672531,18249.0,305,2025-10-19 14:59:06.249003,,,,,,,,,
+0.1409050077199936,0.0011180805740877986,0.1409050077199936,18299.0,305,2025-10-19 15:03:50.129880,,,,,,,,,
+,,,,305,2025-10-19 15:05:29.809313,0.15212632715702057,0.002271700883284211,0.15212632715702057,0.15408800542354584,0.001996409147977829,0.15408800542354584,,,
+,,,,305,2025-10-19 15:05:55.730855,,,,,,,0.1553507000207901,0.002498363144695759,0.1553507000207901
+0.14386866986751556,0.0015239057829603553,0.14386866986751556,18349.0,306,2025-10-19 15:11:35.232262,,,,,,,,,
+,,,,306,2025-10-19 15:13:51.659326,0.15983204543590546,0.00266164168715477,0.15983204543590546,0.156638503074646,0.0022860404569655657,0.156638503074646,,,
+,,,,306,2025-10-19 15:14:19.201656,,,,,,,0.15391312539577484,0.0026907906867563725,0.15391312539577484
+0.14991897344589233,0.002116235438734293,0.14991897344589233,18399.0,307,2025-10-19 15:19:07.822300,,,,,,,,,
+,,,,307,2025-10-19 15:22:14.118446,0.15896272659301758,0.003184181172400713,0.15896272659301758,0.15347127616405487,0.0025596395134925842,0.15347127616405487,,,
+,,,,307,2025-10-19 15:22:40.079717,,,,,,,0.15403352677822113,0.0021197518799453974,0.15403352677822113
+0.16682404279708862,0.0033730417490005493,0.16682404279708862,18449.0,308,2025-10-19 15:26:41.524067,,,,,,,,,
+,,,,308,2025-10-19 15:30:57.836712,0.16129665076732635,0.0026740911416709423,0.16129665076732635,0.1547337919473648,0.0026380615308880806,0.1547337919473648,,,
+,,,,308,2025-10-19 15:31:25.417824,,,,,,,0.14861157536506653,0.0020315677393227816,0.14861157536506653
+0.16219057142734528,0.0036075145471841097,0.16219057142734528,18499.0,309,2025-10-19 15:34:29.021643,,,,,,,,,
+,,,,309,2025-10-19 15:39:42.871984,0.1575583517551422,0.0013803159818053246,0.1575583517551422,0.1577529013156891,0.004382146056741476,0.1577529013156891,,,
+,,,,309,2025-10-19 15:40:09.644438,,,,,,,0.1512453556060791,0.0024481103755533695,0.1512453556060791
+0.13192309439182281,0.0009949661325663328,0.13192309439182281,18549.0,310,2025-10-19 15:42:03.597727,,,,,,,,,
+0.14535295963287354,0.0009208269184455276,0.14535295963287354,18599.0,310,2025-10-19 15:46:52.203268,,,,,,,,,
+,,,,310,2025-10-19 15:48:27.983567,0.1481064110994339,0.0014297144953161478,0.1481064110994339,0.1555001586675644,0.002645815024152398,0.1555001586675644,,,
+,,,,310,2025-10-19 15:48:54.372869,,,,,,,0.15674655139446259,0.0023250628728419542,0.15674655139446259
+0.1708439737558365,0.003262246260419488,0.1708439737558365,18649.0,311,2025-10-19 15:55:09.424927,,,,,,,,,
+,,,,311,2025-10-19 15:57:25.534603,0.15652601420879364,0.003274098737165332,0.15652601420879364,0.15110737085342407,0.0023590452037751675,0.15110737085342407,,,
+,,,,311,2025-10-19 15:57:51.212906,,,,,,,0.15186917781829834,0.002258343854919076,0.15186917781829834
+0.1661534458398819,0.001023443415760994,0.1661534458398819,18699.0,312,2025-10-19 16:02:49.118071,,,,,,,,,
+,,,,312,2025-10-19 16:06:07.412989,0.16114351153373718,0.0029342458583414555,0.16114351153373718,0.15791961550712585,0.0018580263713374734,0.15791961550712585,,,
+,,,,312,2025-10-19 16:06:34.253821,,,,,,,0.15237268805503845,0.002323653781786561,0.15237268805503845
+0.16390371322631836,0.0038269618526101112,0.16390371322631836,18749.0,313,2025-10-19 16:10:26.384349,,,,,,,,,
+,,,,313,2025-10-19 16:14:36.153345,0.1563120037317276,0.0018774427007883787,0.1563120037317276,0.15531238913536072,0.0021927913185209036,0.15531238913536072,,,
+,,,,313,2025-10-19 16:15:03.281014,,,,,,,0.15312078595161438,0.0023196779657155275,0.15312078595161438
+0.1375449001789093,0.0010648107854649425,0.1375449001789093,18799.0,314,2025-10-19 16:17:49.689426,,,,,,,,,
+,,,,314,2025-10-19 16:22:59.003869,0.15666687488555908,0.002993388334289193,0.15666687488555908,0.16468319296836853,0.002719196956604719,0.16468319296836853,,,
+,,,,314,2025-10-19 16:23:25.798747,,,,,,,0.15247103571891785,0.0022606418933719397,0.15247103571891785
+0.18490685522556305,0.004358170088380575,0.18490685522556305,18849.0,315,2025-10-19 16:25:31.446549,,,,,,,,,
+0.1443733125925064,0.0007517549674957991,0.1443733125925064,18899.0,315,2025-10-19 16:29:56.764051,,,,,,,,,
+,,,,315,2025-10-19 16:31:34.935321,0.16088804602622986,0.002529863268136978,0.16088804602622986,0.16840657591819763,0.0029750375542789698,0.16840657591819763,,,
+,,,,315,2025-10-19 16:32:00.803236,,,,,,,0.1511288285255432,0.002503139665350318,0.1511288285255432
+0.15005800127983093,0.0027387579903006554,0.15005800127983093,18949.0,316,2025-10-19 16:37:25.051188,,,,,,,,,
+,,,,316,2025-10-19 16:39:58.966620,0.15602511167526245,0.0029159781988710165,0.15602511167526245,0.15232127904891968,0.0026290754321962595,0.15232127904891968,,,
+,,,,316,2025-10-19 16:40:24.447506,,,,,,,0.14871706068515778,0.001977350329980254,0.14871706068515778
+0.14473536610603333,0.0015688716666772962,0.14473536610603333,18999.0,317,2025-10-19 16:45:21.236700,,,,,,,,,
+,,,,317,2025-10-19 16:48:36.994834,0.16117115318775177,0.0027996671851724386,0.16117115318775177,0.1588197648525238,0.0029107031878083944,0.1588197648525238,,,
+,,,,317,2025-10-19 16:49:02.488231,,,,,,,0.15223799645900726,0.0021056400146335363,0.15223799645900726
+0.14517618715763092,0.001582033233717084,0.14517618715763092,19049.0,318,2025-10-19 16:52:55.012744,,,,,,,,,
+,,,,318,2025-10-19 16:57:15.359218,0.16541774570941925,0.002707767765969038,0.16541774570941925,0.15723861753940582,0.002012814162299037,0.15723861753940582,,,
+,,,,318,2025-10-19 16:57:40.221354,,,,,,,0.15312008559703827,0.0021844245493412018,0.15312008559703827
+0.14480936527252197,0.0010414805728942156,0.14480936527252197,19099.0,319,2025-10-19 17:00:40.567930,,,,,,,,,
+,,,,319,2025-10-19 17:05:43.526604,0.16085098683834076,0.0015842703869566321,0.16085098683834076,0.15185709297657013,0.0014631763333454728,0.15185709297657013,,,
+,,,,319,2025-10-19 17:06:09.863879,,,,,,,0.1545807421207428,0.0020833166781812906,0.1545807421207428
+0.14306733012199402,0.003595546120777726,0.14306733012199402,19149.0,320,2025-10-19 17:08:06.740890,,,,,,,,,
+0.20384684205055237,0.00728941522538662,0.20384684205055237,19199.0,320,2025-10-19 17:12:47.619128,,,,,,,,,
+,,,,320,2025-10-19 17:14:25.494065,0.1615486443042755,0.003352884203195572,0.1615486443042755,0.1556292623281479,0.0015611088601872325,0.1556292623281479,,,
+,,,,320,2025-10-19 17:14:50.959426,,,,,,,0.15348127484321594,0.0019397875294089317,0.15348127484321594
+0.15436352789402008,0.001411943230777979,0.15436352789402008,19249.0,321,2025-10-19 17:20:39.495413,,,,,,,,,
+,,,,321,2025-10-19 17:23:08.027370,0.15127302706241608,0.0026110948529094458,0.15127302706241608,0.15039034187793732,0.0026255750562995672,0.15039034187793732,,,
+,,,,321,2025-10-19 17:23:33.998370,,,,,,,0.14956195652484894,0.0021638234611600637,0.14956195652484894
+0.15621672570705414,0.0013782702153548598,0.15621672570705414,19299.0,322,2025-10-19 17:28:17.960112,,,,,,,,,
+,,,,322,2025-10-19 17:31:33.809056,0.14900758862495422,0.0021056747063994408,0.14900758862495422,0.15113483369350433,0.00202461751177907,0.15113483369350433,,,
+,,,,322,2025-10-19 17:31:59.229975,,,,,,,0.15348994731903076,0.002476017689332366,0.15348994731903076
+0.14745476841926575,0.001397822517901659,0.14745476841926575,19349.0,323,2025-10-19 17:35:52.136253,,,,,,,,,
+,,,,323,2025-10-19 17:40:14.203028,0.15702368319034576,0.004541538655757904,0.15702368319034576,0.14854581654071808,0.0011871682945638895,0.14854581654071808,,,
+,,,,323,2025-10-19 17:40:40.070462,,,,,,,0.15267661213874817,0.0022985730320215225,0.15267661213874817
+0.1272059828042984,0.0014208118664100766,0.1272059828042984,19399.0,324,2025-10-19 17:43:24.574778,,,,,,,,,
+,,,,324,2025-10-19 17:48:33.855652,0.15724802017211914,0.00153527338989079,0.15724802017211914,0.15648086369037628,0.001977302134037018,0.15648086369037628,,,
+,,,,324,2025-10-19 17:48:58.590161,,,,,,,0.15313459932804108,0.002207102021202445,0.15313459932804108
+0.16342633962631226,0.0039026776794344187,0.16342633962631226,19449.0,325,2025-10-19 17:50:51.019672,,,,,,,,,
+0.1427268236875534,0.002953670918941498,0.1427268236875534,19499.0,325,2025-10-19 17:55:18.649285,,,,,,,,,
+,,,,325,2025-10-19 17:56:54.327274,0.16080614924430847,0.002378765493631363,0.16080614924430847,0.16770844161510468,0.0019835522398352623,0.16770844161510468,,,
+,,,,325,2025-10-19 17:57:19.583010,,,,,,,0.15399394929409027,0.002379129407927394,0.15399394929409027
+0.14407475292682648,0.00393701670691371,0.14407475292682648,19549.0,326,2025-10-19 18:03:17.019873,,,,,,,,,
+,,,,326,2025-10-19 18:05:33.760939,0.16075263917446136,0.002872665412724018,0.16075263917446136,0.15228986740112305,0.0021422533318400383,0.15228986740112305,,,
+,,,,326,2025-10-19 18:05:58.875752,,,,,,,0.1478029042482376,0.0024466379545629025,0.1478029042482376
+0.14869849383831024,0.0011691186809912324,0.14869849383831024,19599.0,327,2025-10-19 18:10:42.369977,,,,,,,,,
+,,,,327,2025-10-19 18:14:04.077116,0.1558387130498886,0.001919204369187355,0.1558387130498886,0.15572838485240936,0.0014456914504989982,0.15572838485240936,,,
+,,,,327,2025-10-19 18:14:29.741377,,,,,,,0.14889183640480042,0.0023320710752159357,0.14889183640480042
+0.1484614759683609,0.0008920861291699111,0.1484614759683609,19649.0,328,2025-10-19 18:18:20.167567,,,,,,,,,
+,,,,328,2025-10-19 18:22:16.880808,0.15516529977321625,0.001659103319980204,0.15516529977321625,0.14636091887950897,0.0017421739175915718,0.14636091887950897,,,
+,,,,328,2025-10-19 18:22:41.679597,,,,,,,0.1570340394973755,0.0023245306219905615,0.1570340394973755
+0.1531628668308258,0.002721635391935706,0.1531628668308258,19699.0,329,2025-10-19 18:25:37.271436,,,,,,,,,
+,,,,329,2025-10-19 18:30:47.862442,0.15333262085914612,0.0030444436706602573,0.15333262085914612,0.1453736424446106,0.0024456109385937452,0.1453736424446106,,,
+,,,,329,2025-10-19 18:31:36.433786,,,,,,,0.1531836986541748,0.00249076378531754,0.1531836986541748
+0.15341892838478088,0.0021412898786365986,0.15341892838478088,19749.0,330,2025-10-19 18:33:26.259910,,,,,,,,,
+0.15314708650112152,0.0011949861655011773,0.15314708650112152,19799.0,330,2025-10-19 18:38:01.442621,,,,,,,,,
+,,,,330,2025-10-19 18:39:38.653592,0.1622767448425293,0.0020139082334935665,0.1622767448425293,0.16073265671730042,0.002011824632063508,0.16073265671730042,,,
+,,,,330,2025-10-19 18:40:04.236517,,,,,,,0.15136031806468964,0.0021813989151269197,0.15136031806468964
+0.15203557908535004,0.0040755425579845905,0.15203557908535004,19849.0,331,2025-10-19 18:46:02.283554,,,,,,,,,
+,,,,331,2025-10-19 18:48:18.108437,0.1428762525320053,0.0018677450716495514,0.1428762525320053,0.15590019524097443,0.0015463029267266393,0.15590019524097443,,,
+,,,,331,2025-10-19 18:48:46.077605,,,,,,,0.1476603001356125,0.002001838991418481,0.1476603001356125
+0.16194453835487366,0.0017540660919621587,0.16194453835487366,19899.0,332,2025-10-19 18:53:34.626732,,,,,,,,,
+,,,,332,2025-10-19 18:56:43.819918,0.1596086025238037,0.003108019707724452,0.1596086025238037,0.1668846756219864,0.0016680448316037655,0.1668846756219864,,,
+,,,,332,2025-10-19 18:57:09.536684,,,,,,,0.15377910435199738,0.0022231366019695997,0.15377910435199738
+0.13084742426872253,0.002443957142531872,0.13084742426872253,19949.0,333,2025-10-19 19:00:53.253737,,,,,,,,,
+,,,,333,2025-10-19 19:05:22.084998,0.13890111446380615,0.0020005423575639725,0.13890111446380615,0.15996384620666504,0.0020225096959620714,0.15996384620666504,,,
+,,,,333,2025-10-19 19:05:48.168029,,,,,,,0.1514495313167572,0.0024636886082589626,0.1514495313167572
+0.11226579546928406,0.0027725256513804197,0.11226579546928406,19999.0,334,2025-10-19 19:08:37.457467,,,,,,,,,
+,,,,334,2025-10-19 19:13:44.510060,0.16277725994586945,0.002411369001492858,0.16277725994586945,0.1567196249961853,0.002333875745534897,0.1567196249961853,,,
+,,,,334,2025-10-19 19:14:09.401463,,,,,,,0.15160518884658813,0.002592379692941904,0.15160518884658813
+0.15199778974056244,0.002490198239684105,0.15199778974056244,20049.0,335,2025-10-19 19:16:02.931300,,,,,,,,,
+0.14602531492710114,0.0010675149969756603,0.14602531492710114,20099.0,335,2025-10-19 19:20:43.829218,,,,,,,,,
+,,,,335,2025-10-19 19:22:18.613277,0.1654980331659317,0.0028099878691136837,0.1654980331659317,0.15378069877624512,0.0018093520775437355,0.15378069877624512,,,
+,,,,335,2025-10-19 19:22:44.287558,,,,,,,0.15146119892597198,0.002114050555974245,0.15146119892597198
+0.15168842673301697,0.0011694820132106543,0.15168842673301697,20149.0,336,2025-10-19 19:28:46.056821,,,,,,,,,
+,,,,336,2025-10-19 19:31:06.720610,0.14793749153614044,0.0024909835774451494,0.14793749153614044,0.1512591391801834,0.0021187695674598217,0.1512591391801834,,,
+,,,,336,2025-10-19 19:31:34.348694,,,,,,,0.15290416777133942,0.0021339664235711098,0.15290416777133942
+0.14489184319972992,0.0010521650547161698,0.14489184319972992,20199.0,337,2025-10-19 19:36:24.770671,,,,,,,,,
+,,,,337,2025-10-19 19:39:27.434030,0.150334894657135,0.002917683683335781,0.150334894657135,0.15318135917186737,0.001657301327213645,0.15318135917186737,,,
+,,,,337,2025-10-19 19:39:53.616619,,,,,,,0.15032607316970825,0.002154306508600712,0.15032607316970825
+0.13132260739803314,0.0034694995265454054,0.13132260739803314,20249.0,338,2025-10-19 19:43:59.044302,,,,,,,,,
+,,,,338,2025-10-19 19:48:04.687988,0.16207709908485413,0.0018313887994736433,0.16207709908485413,0.15060071647167206,0.0014894244959577918,0.15060071647167206,,,
+,,,,338,2025-10-19 19:48:30.977230,,,,,,,0.15398308634757996,0.0024918385315686464,0.15398308634757996
+0.14207811653614044,0.0012377382954582572,0.14207811653614044,20299.0,339,2025-10-19 19:51:34.377847,,,,,,,,,
+,,,,339,2025-10-19 19:56:42.175608,0.1452459692955017,0.0023688552901148796,0.1452459692955017,0.16326580941677094,0.0030382154509425163,0.16326580941677094,,,
+,,,,339,2025-10-19 19:57:09.419293,,,,,,,0.15334206819534302,0.002106229541823268,0.15334206819534302
+0.15891426801681519,0.002104436280205846,0.15891426801681519,20349.0,340,2025-10-19 19:58:56.254263,,,,,,,,,
+0.17914940416812897,0.003432807745411992,0.17914940416812897,20399.0,340,2025-10-19 20:04:05.694139,,,,,,,,,
+,,,,340,2025-10-19 20:05:41.024630,0.16188964247703552,0.0021959710866212845,0.16188964247703552,0.13972117006778717,0.0013013568241149187,0.13972117006778717,,,
+,,,,340,2025-10-19 20:06:31.315249,,,,,,,0.14817923307418823,0.0022522318176925182,0.14817923307418823
+0.15012504160404205,0.0026526411529630423,0.15012504160404205,20449.0,341,2025-10-19 20:11:59.438576,,,,,,,,,
+,,,,341,2025-10-19 20:14:34.969612,0.15356291830539703,0.0031637991778552532,0.15356291830539703,0.14860382676124573,0.0012059203581884503,0.14860382676124573,,,
+,,,,341,2025-10-19 20:15:02.127380,,,,,,,0.15257324278354645,0.0022275701630860567,0.15257324278354645
+0.13125301897525787,0.0034912023693323135,0.13125301897525787,20499.0,342,2025-10-19 20:19:56.490345,,,,,,,,,
+,,,,342,2025-10-19 20:23:08.740794,0.16026166081428528,0.0037219589576125145,0.16026166081428528,0.15843667089939117,0.001757598016411066,0.15843667089939117,,,
+,,,,342,2025-10-19 20:23:34.801258,,,,,,,0.14761759340763092,0.0020786128006875515,0.14761759340763092
+0.12336273491382599,0.0015470052603632212,0.12336273491382599,20549.0,343,2025-10-19 20:27:09.625195,,,,,,,,,
+,,,,343,2025-10-19 20:31:36.611417,0.15696455538272858,0.0019285575253888965,0.15696455538272858,0.1519690304994583,0.0012949182419106364,0.1519690304994583,,,
+,,,,343,2025-10-19 20:32:02.853435,,,,,,,0.15470637381076813,0.0025448354426771402,0.15470637381076813
+0.16032524406909943,0.0011513675563037395,0.16032524406909943,20599.0,344,2025-10-19 20:34:44.006300,,,,,,,,,
+,,,,344,2025-10-19 20:39:54.833558,0.15478111803531647,0.0024996884167194366,0.15478111803531647,0.14731387794017792,0.0019454763969406486,0.14731387794017792,,,
+,,,,344,2025-10-19 20:40:20.052890,,,,,,,0.15514609217643738,0.002700365614145994,0.15514609217643738
+0.13717475533485413,0.0009538785670883954,0.13717475533485413,20649.0,345,2025-10-19 20:42:09.222066,,,,,,,,,
+0.15611685812473297,0.0021758051589131355,0.15611685812473297,20699.0,345,2025-10-19 20:46:50.478514,,,,,,,,,
+,,,,345,2025-10-19 20:48:25.146322,0.15077993273735046,0.001831565867178142,0.15077993273735046,0.14330901205539703,0.0013873676070943475,0.14330901205539703,,,
+,,,,345,2025-10-19 20:49:14.629293,,,,,,,0.1520809382200241,0.002425732556730509,0.1520809382200241
+0.15154746174812317,0.002207554876804352,0.15154746174812317,20749.0,346,2025-10-19 20:55:07.742120,,,,,,,,,
+,,,,346,2025-10-19 20:57:23.171746,0.16306950151920319,0.002629698719829321,0.16306950151920319,0.1604558229446411,0.0026533533819019794,0.1604558229446411,,,
+,,,,346,2025-10-19 20:57:48.156186,,,,,,,0.1526680588722229,0.002356467302888632,0.1526680588722229
+0.15133745968341827,0.001132794190198183,0.15133745968341827,20799.0,347,2025-10-19 21:02:51.301203,,,,,,,,,
+,,,,347,2025-10-19 21:06:17.337500,0.15956324338912964,0.0019680275581777096,0.15956324338912964,0.16001835465431213,0.0027032403741031885,0.16001835465431213,,,
+,,,,347,2025-10-19 21:06:41.716031,,,,,,,0.14987285435199738,0.0023544507566839457,0.14987285435199738
+0.1333857774734497,0.0017973515205085278,0.1333857774734497,20849.0,348,2025-10-19 21:10:32.278500,,,,,,,,,
+,,,,348,2025-10-19 21:14:44.879283,0.1528196781873703,0.0026248758658766747,0.1528196781873703,0.15081419050693512,0.0012911076191812754,0.15081419050693512,,,
+,,,,348,2025-10-19 21:15:10.102243,,,,,,,0.15236243605613708,0.002064961241558194,0.15236243605613708
+0.13777704536914825,0.0008096411474980414,0.13777704536914825,20899.0,349,2025-10-19 21:17:56.468308,,,,,,,,,
+,,,,349,2025-10-19 21:23:03.026801,0.15448115766048431,0.0026713754050433636,0.15448115766048431,0.1495061218738556,0.002879527397453785,0.1495061218738556,,,
+,,,,349,2025-10-19 21:23:27.677150,,,,,,,0.15503498911857605,0.002196790184825659,0.15503498911857605
+0.1379787176847458,0.0013691064668819308,0.1379787176847458,20949.0,350,2025-10-19 21:25:20.203255,,,,,,,,,
+0.13456109166145325,0.0014300805050879717,0.13456109166145325,20999.0,350,2025-10-19 21:29:47.726515,,,,,,,,,
+,,,,350,2025-10-19 21:31:22.030834,0.1530885547399521,0.001456531579606235,0.1530885547399521,0.16464778780937195,0.0020932999905198812,0.16464778780937195,,,
+,,,,350,2025-10-19 21:31:47.723328,,,,,,,0.14882639050483704,0.0020378364715725183,0.14882639050483704
+0.13952350616455078,0.0009288221481256187,0.13952350616455078,21049.0,351,2025-10-19 21:37:20.210413,,,,,,,,,
+,,,,351,2025-10-19 21:39:43.442958,0.1521458625793457,0.002610317664220929,0.1521458625793457,0.15789832174777985,0.0020755825098603964,0.15789832174777985,,,
+,,,,351,2025-10-19 21:40:08.469063,,,,,,,0.1496049165725708,0.002062966115772724,0.1496049165725708
+0.15642502903938293,0.0022808334324508905,0.15642502903938293,21099.0,352,2025-10-19 21:45:12.249989,,,,,,,,,
+,,,,352,2025-10-19 21:48:18.481392,0.1611349880695343,0.003694772720336914,0.1611349880695343,0.16350694000720978,0.0024063594173640013,0.16350694000720978,,,
+,,,,352,2025-10-19 21:48:43.893440,,,,,,,0.14686140418052673,0.0021372924093157053,0.14686140418052673
+0.14458025991916656,0.0010363933397457004,0.14458025991916656,21149.0,353,2025-10-19 21:52:33.763108,,,,,,,,,
+,,,,353,2025-10-19 21:56:54.255937,0.1468711644411087,0.0022991481237113476,0.1468711644411087,0.1599506437778473,0.0027636925224214792,0.1599506437778473,,,
+,,,,353,2025-10-19 21:57:20.486790,,,,,,,0.1484837830066681,0.00198866194114089,0.1484837830066681
+0.15664899349212646,0.003934108652174473,0.15664899349212646,21199.0,354,2025-10-19 22:00:20.405751,,,,,,,,,
+,,,,354,2025-10-19 22:05:24.009088,0.157644584774971,0.002930725459009409,0.157644584774971,0.15242505073547363,0.0024304348044097424,0.15242505073547363,,,
+,,,,354,2025-10-19 22:05:52.098734,,,,,,,0.15044914186000824,0.002321201376616955,0.15044914186000824
+0.1631026566028595,0.004520595073699951,0.1631026566028595,21249.0,355,2025-10-19 22:07:42.204972,,,,,,,,,
+0.14850200712680817,0.0020590920466929674,0.14850200712680817,21299.0,355,2025-10-19 22:12:43.062456,,,,,,,,,
+,,,,355,2025-10-19 22:14:22.990311,0.16149242222309113,0.0026990410406142473,0.16149242222309113,0.14773137867450714,0.0012907407945021987,0.14773137867450714,,,
+,,,,355,2025-10-19 22:14:49.468747,,,,,,,0.14974729716777802,0.002237228211015463,0.14974729716777802
+0.16343358159065247,0.001840441720560193,0.16343358159065247,21349.0,356,2025-10-19 22:20:51.742791,,,,,,,,,
+,,,,356,2025-10-19 22:23:06.028913,0.16555413603782654,0.0037690859753638506,0.16555413603782654,0.15721195936203003,0.0018532162066549063,0.15721195936203003,,,
+,,,,356,2025-10-19 22:23:32.514121,,,,,,,0.1508292853832245,0.0022502830252051353,0.1508292853832245
+0.15752962231636047,0.001256516668945551,0.15752962231636047,21399.0,357,2025-10-19 22:28:28.956594,,,,,,,,,
+,,,,357,2025-10-19 22:31:49.087093,0.15193046629428864,0.002236847532913089,0.15193046629428864,0.15397249162197113,0.0025048423558473587,0.15397249162197113,,,
+,,,,357,2025-10-19 22:32:17.058017,,,,,,,0.15290825068950653,0.0023853532038629055,0.15290825068950653
+0.14123253524303436,0.0014876504428684711,0.14123253524303436,21449.0,358,2025-10-19 22:36:18.706541,,,,,,,,,
+,,,,358,2025-10-19 22:40:18.745208,0.15152062475681305,0.0024075591936707497,0.15152062475681305,0.16288334131240845,0.0022226846776902676,0.16288334131240845,,,
+,,,,358,2025-10-19 22:40:45.538667,,,,,,,0.14796042442321777,0.00218565808609128,0.14796042442321777
+0.1386258453130722,0.0007550850277766585,0.1386258453130722,21499.0,359,2025-10-19 22:43:27.473847,,,,,,,,,
+,,,,359,2025-10-19 22:48:55.284838,0.1506097912788391,0.0015951996902003884,0.1506097912788391,0.15350110828876495,0.0019558363128453493,0.15350110828876495,,,
+,,,,359,2025-10-19 22:49:21.430497,,,,,,,0.1514386087656021,0.0023169992491602898,0.1514386087656021
+0.1415528804063797,0.005230304319411516,0.1415528804063797,21549.0,360,2025-10-19 22:51:15.507703,,,,,,,,,
+0.13803730905056,0.0013066950486972928,0.13803730905056,21599.0,360,2025-10-19 22:55:50.147390,,,,,,,,,
+,,,,360,2025-10-19 22:57:24.186927,0.1562640368938446,0.001462816260755062,0.1562640368938446,0.1493949443101883,0.002360409824177623,0.1493949443101883,,,
+,,,,360,2025-10-19 22:57:48.449025,,,,,,,0.15029610693454742,0.002476901514455676,0.15029610693454742
+0.17605066299438477,0.004364033229649067,0.17605066299438477,21649.0,361,2025-10-19 23:03:34.407176,,,,,,,,,
+,,,,361,2025-10-19 23:05:47.970489,0.15196114778518677,0.0018179849721491337,0.15196114778518677,0.15055540204048157,0.001355250715278089,0.15055540204048157,,,
+,,,,361,2025-10-19 23:06:14.930599,,,,,,,0.14988437294960022,0.00201394222676754,0.14988437294960022
+0.15773440897464752,0.0048024593852460384,0.15773440897464752,21699.0,362,2025-10-19 23:10:54.525745,,,,,,,,,
+,,,,362,2025-10-19 23:14:18.923308,0.14978337287902832,0.0021026981994509697,0.14978337287902832,0.1531846821308136,0.0018793657654896379,0.1531846821308136,,,
+,,,,362,2025-10-19 23:14:44.853894,,,,,,,0.14582708477973938,0.0021397119853645563,0.14582708477973938
+0.1503124237060547,0.0024567225482314825,0.1503124237060547,21749.0,363,2025-10-19 23:18:22.646079,,,,,,,,,
+,,,,363,2025-10-19 23:22:28.513333,0.1557556837797165,0.0034270635806024075,0.1557556837797165,0.15467838943004608,0.0018297728383913636,0.15467838943004608,,,
+,,,,363,2025-10-19 23:22:55.318015,,,,,,,0.1490688920021057,0.002201127354055643,0.1490688920021057
+0.14753815531730652,0.0038426246028393507,0.14753815531730652,21799.0,364,2025-10-19 23:25:48.534122,,,,,,,,,
+,,,,364,2025-10-19 23:31:03.129661,0.1379004567861557,0.0021258103661239147,0.1379004567861557,0.15077722072601318,0.0013347273925319314,0.15077722072601318,,,
+,,,,364,2025-10-19 23:31:29.563126,,,,,,,0.15000924468040466,0.0022934195585548878,0.15000924468040466
+0.15880902111530304,0.0021919547580182552,0.15880902111530304,21849.0,365,2025-10-19 23:33:13.227837,,,,,,,,,
+0.14106157422065735,0.0038005237001925707,0.14106157422065735,21899.0,365,2025-10-19 23:37:44.854632,,,,,,,,,
+,,,,365,2025-10-19 23:39:17.230355,0.1441473513841629,0.0014292355626821518,0.1441473513841629,0.14342400431632996,0.0011019548401236534,0.14342400431632996,,,
+,,,,365,2025-10-19 23:39:42.742734,,,,,,,0.1528967320919037,0.0022032808046787977,0.1528967320919037
+0.15645736455917358,0.0014483027625828981,0.15645736455917358,21949.0,366,2025-10-19 23:45:36.955921,,,,,,,,,
+,,,,366,2025-10-19 23:47:52.718197,0.15418238937854767,0.0019586491398513317,0.15418238937854767,0.14667390286922455,0.0023860076908022165,0.14667390286922455,,,
+,,,,366,2025-10-19 23:48:20.108478,,,,,,,0.1499779373407364,0.0018885597819462419,0.1499779373407364
+0.14454440772533417,0.0011902928818017244,0.14454440772533417,21999.0,367,2025-10-19 23:53:08.417486,,,,,,,,,
+,,,,367,2025-10-19 23:56:17.171009,0.14969560503959656,0.0022630272433161736,0.14969560503959656,0.15659281611442566,0.0028747348114848137,0.15659281611442566,,,
+,,,,367,2025-10-19 23:56:42.259034,,,,,,,0.1500169038772583,0.0024170312099158764,0.1500169038772583
+0.1360192894935608,0.0011527026072144508,0.1360192894935608,22049.0,368,2025-10-20 00:00:42.655479,,,,,,,,,
+,,,,368,2025-10-20 00:05:08.488938,0.15878529846668243,0.0021842580754309893,0.15878529846668243,0.15049338340759277,0.0016903989017009735,0.15049338340759277,,,
+,,,,368,2025-10-20 00:05:34.696505,,,,,,,0.1499805450439453,0.0022009345702826977,0.1499805450439453
+0.14622028172016144,0.0025987629778683186,0.14622028172016144,22099.0,369,2025-10-20 00:08:37.597352,,,,,,,,,
+,,,,369,2025-10-20 00:13:31.243547,0.14840127527713776,0.0022417756263166666,0.14840127527713776,0.1531100869178772,0.003633214393630624,0.1531100869178772,,,
+,,,,369,2025-10-20 00:13:56.383122,,,,,,,0.1512414664030075,0.0023755652364343405,0.1512414664030075
+0.1707381159067154,0.001721797394566238,0.1707381159067154,22149.0,370,2025-10-20 00:15:42.516282,,,,,,,,,
+0.157256618142128,0.002103751292452216,0.157256618142128,22199.0,370,2025-10-20 00:20:17.783022,,,,,,,,,
+,,,,370,2025-10-20 00:21:53.659483,0.15712004899978638,0.0015452858060598373,0.15712004899978638,0.15155662596225739,0.0025521968491375446,0.15155662596225739,,,
+,,,,370,2025-10-20 00:22:19.406057,,,,,,,0.1494724452495575,0.0023089908063411713,0.1494724452495575
+0.13260409235954285,0.006997146178036928,0.13260409235954285,22249.0,371,2025-10-20 00:28:20.595636,,,,,,,,,
+,,,,371,2025-10-20 00:30:36.036773,0.1616322100162506,0.0016048431862145662,0.1616322100162506,0.15369361639022827,0.003670657519251108,0.15369361639022827,,,
+,,,,371,2025-10-20 00:31:02.138466,,,,,,,0.14904485642910004,0.002365005435422063,0.14904485642910004
+0.1319124847650528,0.00148265331517905,0.1319124847650528,22299.0,372,2025-10-20 00:35:45.545329,,,,,,,,,
+,,,,372,2025-10-20 00:38:56.737013,0.14663991332054138,0.001416494487784803,0.14663991332054138,0.14541810750961304,0.002050405368208885,0.14541810750961304,,,
+,,,,372,2025-10-20 00:39:24.053983,,,,,,,0.1490846872329712,0.002465581288561225,0.1490846872329712
+0.15060077607631683,0.004066115245223045,0.15060077607631683,22349.0,373,2025-10-20 00:43:43.267119,,,,,,,,,
+,,,,373,2025-10-20 00:47:27.392418,0.1570344865322113,0.0020837653428316116,0.1570344865322113,0.1504630148410797,0.0014101710403338075,0.1504630148410797,,,
+,,,,373,2025-10-20 00:47:54.658190,,,,,,,0.1484614461660385,0.002350402297452092,0.1484614461660385
+0.15144754946231842,0.0043020606972277164,0.15144754946231842,22399.0,374,2025-10-20 00:50:35.493755,,,,,,,,,
+,,,,374,2025-10-20 00:55:55.058841,0.1644219607114792,0.002233500825241208,0.1644219607114792,0.16349801421165466,0.0031178549397736788,0.16349801421165466,,,
+,,,,374,2025-10-20 00:56:21.352784,,,,,,,0.14919129014015198,0.002289260970428586,0.14919129014015198
+0.16279570758342743,0.00118461181409657,0.16279570758342743,22449.0,375,2025-10-20 00:58:17.837126,,,,,,,,,
+0.12466753274202347,0.002570714568719268,0.12466753274202347,22499.0,375,2025-10-20 01:03:17.195491,,,,,,,,,
+,,,,375,2025-10-20 01:04:49.874769,0.14965610206127167,0.0014789463020861149,0.14965610206127167,0.1530415117740631,0.002745544072240591,0.1530415117740631,,,
+,,,,375,2025-10-20 01:05:16.488490,,,,,,,0.1450912058353424,0.0024137315340340137,0.1450912058353424
+0.16191887855529785,0.0011296048760414124,0.16191887855529785,22549.0,376,2025-10-20 01:11:07.280460,,,,,,,,,
+,,,,376,2025-10-20 01:13:27.024242,0.14982984960079193,0.00154107843991369,0.14982984960079193,0.15723158419132233,0.0023976375814527273,0.15723158419132233,,,
+,,,,376,2025-10-20 01:13:52.689329,,,,,,,0.1500254124403,0.002244514413177967,0.1500254124403
+0.12337607890367508,0.0012179434997960925,0.12337607890367508,22599.0,377,2025-10-20 01:18:43.782812,,,,,,,,,
+,,,,377,2025-10-20 01:22:05.683036,0.15152011811733246,0.0022616146598011255,0.15152011811733246,0.15445667505264282,0.003452735021710396,0.15445667505264282,,,
+,,,,377,2025-10-20 01:22:32.849553,,,,,,,0.1514463722705841,0.002400260651484132,0.1514463722705841
+0.13024644553661346,0.0008530400809831917,0.13024644553661346,22649.0,378,2025-10-20 01:26:17.117032,,,,,,,,,
+,,,,378,2025-10-20 01:30:27.501364,0.1532035917043686,0.0027622696943581104,0.1532035917043686,0.1456070989370346,0.0017131961649283767,0.1456070989370346,,,
+,,,,378,2025-10-20 01:30:55.134798,,,,,,,0.14803358912467957,0.002162923337891698,0.14803358912467957
+0.17120221257209778,0.001340127782896161,0.17120221257209778,22699.0,379,2025-10-20 01:33:46.700860,,,,,,,,,
+,,,,379,2025-10-20 01:39:31.257365,0.1408424824476242,0.002230757148936391,0.1408424824476242,0.15700271725654602,0.0023165924940258265,0.15700271725654602,,,
+,,,,379,2025-10-20 01:39:56.785052,,,,,,,0.1485532820224762,0.0020320492330938578,0.1485532820224762
+0.11686737090349197,0.0008361268555745482,0.11686737090349197,22749.0,380,2025-10-20 01:41:53.110791,,,,,,,,,
+0.12035239487886429,0.0016960605280473828,0.12035239487886429,22799.0,380,2025-10-20 01:46:46.831493,,,,,,,,,
+,,,,380,2025-10-20 01:48:23.341260,0.15097902715206146,0.0022256774827837944,0.15097902715206146,0.1485500931739807,0.003687181742861867,0.1485500931739807,,,
+,,,,380,2025-10-20 01:48:49.086401,,,,,,,0.14589297771453857,0.002209753729403019,0.14589297771453857
+0.17016315460205078,0.001471164752729237,0.17016315460205078,22849.0,381,2025-10-20 01:54:30.165865,,,,,,,,,
+,,,,381,2025-10-20 01:57:00.402142,0.14778189361095428,0.0014836253831163049,0.14778189361095428,0.15876144170761108,0.0019326683832332492,0.15876144170761108,,,
+,,,,381,2025-10-20 01:57:27.334480,,,,,,,0.15041254460811615,0.0021358022931963205,0.15041254460811615
+0.13194026052951813,0.0030366878490895033,0.13194026052951813,22899.0,382,2025-10-20 02:02:47.665494,,,,,,,,,
+,,,,382,2025-10-20 02:05:54.499539,0.14609618484973907,0.0016656842781230807,0.14609618484973907,0.1464657187461853,0.0029432629235088825,0.1464657187461853,,,
+,,,,382,2025-10-20 02:06:21.442664,,,,,,,0.14800938963890076,0.0022045038640499115,0.14800938963890076
+0.13890844583511353,0.0010276847751811147,0.13890844583511353,22949.0,383,2025-10-20 02:10:23.579432,,,,,,,,,
+,,,,383,2025-10-20 02:14:36.380171,0.14767707884311676,0.0020820775534957647,0.14767707884311676,0.1503114253282547,0.0026540334802120924,0.1503114253282547,,,
+,,,,383,2025-10-20 02:15:02.250398,,,,,,,0.14648592472076416,0.002004365436732769,0.14648592472076416
+0.12376987189054489,0.0015579289756715298,0.12376987189054489,22999.0,384,2025-10-20 02:17:56.008479,,,,,,,,,
+,,,,384,2025-10-20 02:23:10.829658,0.1609649509191513,0.0034460732713341713,0.1609649509191513,0.15467938780784607,0.0038384366780519485,0.15467938780784607,,,
+,,,,384,2025-10-20 02:23:37.294891,,,,,,,0.1470647007226944,0.002180605661123991,0.1470647007226944
+0.1553170531988144,0.0023218910209834576,0.1553170531988144,23049.0,385,2025-10-20 02:25:27.977142,,,,,,,,,
+0.16503578424453735,0.0015989621169865131,0.16503578424453735,23099.0,385,2025-10-20 02:29:54.295993,,,,,,,,,
+,,,,385,2025-10-20 02:31:27.519853,0.145887091755867,0.0022996573243290186,0.145887091755867,0.14806896448135376,0.001780603895895183,0.14806896448135376,,,
+,,,,385,2025-10-20 02:31:56.412911,,,,,,,0.15272104740142822,0.0023798702750355005,0.15272104740142822
+0.15401680767536163,0.001757115707732737,0.15401680767536163,23149.0,386,2025-10-20 02:38:04.286715,,,,,,,,,
+,,,,386,2025-10-20 02:40:21.621707,0.14325553178787231,0.0014092602068558335,0.14325553178787231,0.1598694771528244,0.0024819085374474525,0.1598694771528244,,,
+,,,,386,2025-10-20 02:40:47.119012,,,,,,,0.15196260809898376,0.0021819365210831165,0.15196260809898376
+0.16991026699543,0.002546250121667981,0.16991026699543,23199.0,387,2025-10-20 02:45:34.518772,,,,,,,,,
+,,,,387,2025-10-20 02:49:09.844463,0.1539110541343689,0.0035623442381620407,0.1539110541343689,0.15205873548984528,0.0025188587605953217,0.15205873548984528,,,
+,,,,387,2025-10-20 02:49:36.079335,,,,,,,0.14778544008731842,0.0021481001749634743,0.14778544008731842
+0.15675359964370728,0.0025799607392400503,0.15675359964370728,23249.0,388,2025-10-20 02:53:44.289945,,,,,,,,,
+,,,,388,2025-10-20 02:57:49.812188,0.1572151631116867,0.0039357529021799564,0.1572151631116867,0.1494007259607315,0.0011799834901466966,0.1494007259607315,,,
+,,,,388,2025-10-20 02:58:16.003628,,,,,,,0.14690861105918884,0.002136378549039364,0.14690861105918884
+0.140010803937912,0.0018537921132519841,0.140010803937912,23299.0,389,2025-10-20 03:01:19.885963,,,,,,,,,
+,,,,389,2025-10-20 03:06:24.242185,0.14874789118766785,0.0027471655048429966,0.14874789118766785,0.15003620088100433,0.002585539361461997,0.15003620088100433,,,
+,,,,389,2025-10-20 03:06:50.708229,,,,,,,0.14827130734920502,0.0024300795048475266,0.14827130734920502
+0.17680759727954865,0.0019564430695027113,0.17680759727954865,23349.0,390,2025-10-20 03:08:47.522851,,,,,,,,,
+0.17877981066703796,0.003706233110278845,0.17877981066703796,23399.0,390,2025-10-20 03:13:14.614770,,,,,,,,,
+,,,,390,2025-10-20 03:14:51.290504,0.15606258809566498,0.0020936469081789255,0.15606258809566498,0.14564186334609985,0.0013450682163238525,0.14564186334609985,,,
+,,,,390,2025-10-20 03:15:18.099958,,,,,,,0.15018871426582336,0.0020121962297707796,0.15018871426582336
+0.16663417220115662,0.0033039026893675327,0.16663417220115662,23449.0,391,2025-10-20 03:21:00.724996,,,,,,,,,
+,,,,391,2025-10-20 03:23:30.714520,0.14807645976543427,0.003200356150045991,0.14807645976543427,0.1534915715456009,0.0015078861033543944,0.1534915715456009,,,
+,,,,391,2025-10-20 03:23:56.687714,,,,,,,0.15131519734859467,0.002536045853048563,0.15131519734859467
+0.153102844953537,0.0016133167082443833,0.153102844953537,23499.0,392,2025-10-20 03:28:44.784830,,,,,,,,,
+,,,,392,2025-10-20 03:31:49.717036,0.1462945193052292,0.0018089758232235909,0.1462945193052292,0.15081848204135895,0.0020466758869588375,0.15081848204135895,,,
+,,,,392,2025-10-20 03:32:16.638756,,,,,,,0.15132057666778564,0.002603919943794608,0.15132057666778564
+0.16758987307548523,0.004456511233001947,0.16758987307548523,23549.0,393,2025-10-20 03:36:08.516175,,,,,,,,,
+,,,,393,2025-10-20 03:40:38.106287,0.14682689309120178,0.0014464008854702115,0.14682689309120178,0.15027140080928802,0.0012750430032610893,0.15027140080928802,,,
+,,,,393,2025-10-20 03:41:04.612497,,,,,,,0.14872495830059052,0.0023069942835718393,0.14872495830059052
+0.1323995590209961,0.0007866100640967488,0.1323995590209961,23599.0,394,2025-10-20 03:43:44.507026,,,,,,,,,
+,,,,394,2025-10-20 03:49:16.259909,0.1650218814611435,0.0021948623470962048,0.1650218814611435,0.16478398442268372,0.002135950606316328,0.16478398442268372,,,
+,,,,394,2025-10-20 03:49:42.622414,,,,,,,0.15485307574272156,0.002083556028082967,0.15485307574272156
+0.15657727420330048,0.0011502399574965239,0.15657727420330048,23649.0,395,2025-10-20 03:51:38.787916,,,,,,,,,
+0.1583477407693863,0.0013557327911257744,0.1583477407693863,23699.0,395,2025-10-20 03:56:18.183159,,,,,,,,,
+,,,,395,2025-10-20 03:57:53.245840,0.15151531994342804,0.001882675918750465,0.15151531994342804,0.16314902901649475,0.003038894385099411,0.16314902901649475,,,
+,,,,395,2025-10-20 03:58:20.567725,,,,,,,0.14958824217319489,0.002353489166125655,0.14958824217319489
+0.15002836287021637,0.0009954542620107532,0.15002836287021637,23749.0,396,2025-10-20 04:04:23.816876,,,,,,,,,
+,,,,396,2025-10-20 04:06:38.826274,0.14575012028217316,0.0027305784169584513,0.14575012028217316,0.1564042866230011,0.0027793135959655046,0.1564042866230011,,,
+,,,,396,2025-10-20 04:07:04.987261,,,,,,,0.15070632100105286,0.002026599133387208,0.15070632100105286
+0.16346009075641632,0.00113245181273669,0.16346009075641632,23799.0,397,2025-10-20 04:11:52.537560,,,,,,,,,
+,,,,397,2025-10-20 04:14:54.955827,0.14939148724079132,0.0015395770315080881,0.14939148724079132,0.14989180862903595,0.0034350852947682142,0.14989180862903595,,,
+,,,,397,2025-10-20 04:15:21.917324,,,,,,,0.15203732252120972,0.0020000857766717672,0.15203732252120972
+0.14443033933639526,0.0021804391872137785,0.14443033933639526,23849.0,398,2025-10-20 04:19:19.758583,,,,,,,,,
+,,,,398,2025-10-20 04:23:25.313415,0.15186750888824463,0.002480011200532317,0.15186750888824463,0.15010088682174683,0.0016351420199498534,0.15010088682174683,,,
+,,,,398,2025-10-20 04:23:52.838379,,,,,,,0.1462506651878357,0.002204624703153968,0.1462506651878357
+0.15454022586345673,0.001393509446643293,0.15454022586345673,23899.0,399,2025-10-20 04:26:57.241444,,,,,,,,,
+,,,,399,2025-10-20 04:31:59.394645,0.14524605870246887,0.0018836314557120204,0.14524605870246887,0.1573840081691742,0.0018575855065137148,0.1573840081691742,,,
+,,,,399,2025-10-20 04:32:27.268117,,,,,,,0.14428022503852844,0.0016757354605942965,0.14428022503852844
+0.15112289786338806,0.001371655729599297,0.15112289786338806,23949.0,400,2025-10-20 04:34:04.768392,,,,,,,,,
+0.16027969121932983,0.002985453000292182,0.16027969121932983,23999.0,400,2025-10-20 04:38:58.555741,,,,,,,,,
+,,,,400,2025-10-20 04:40:38.265576,0.1503409445285797,0.0025559794157743454,0.1503409445285797,0.15889108180999756,0.0043276334181427956,0.15889108180999756,,,
+,,,,400,2025-10-20 04:41:04.967210,,,,,,,0.14725959300994873,0.0021967163775116205,0.14725959300994873
+0.14835362136363983,0.000882487918715924,0.14835362136363983,24049.0,401,2025-10-20 04:46:38.930872,,,,,,,,,
+,,,,401,2025-10-20 04:49:10.183916,0.14822642505168915,0.001563750091008842,0.14822642505168915,0.16340181231498718,0.0017375636380165815,0.16340181231498718,,,
+,,,,401,2025-10-20 04:49:37.325363,,,,,,,0.15168145298957825,0.002326836111024022,0.15168145298957825
+0.15866197645664215,0.001298312097787857,0.15866197645664215,24099.0,402,2025-10-20 04:54:23.306780,,,,,,,,,
+,,,,402,2025-10-20 04:57:41.512553,0.1556652933359146,0.0020176335237920284,0.1556652933359146,0.15935340523719788,0.0024242280051112175,0.15935340523719788,,,
+,,,,402,2025-10-20 04:58:07.825359,,,,,,,0.1492154747247696,0.0022577496711164713,0.1492154747247696
+0.13822732865810394,0.0030485419556498528,0.13822732865810394,24149.0,403,2025-10-20 05:02:15.223445,,,,,,,,,
+,,,,403,2025-10-20 05:06:28.604490,0.14585041999816895,0.0019310986390337348,0.14585041999816895,0.1476573944091797,0.002627953188493848,0.1476573944091797,,,
+,,,,403,2025-10-20 05:06:55.227995,,,,,,,0.1483687311410904,0.0022086959797888994,0.1483687311410904
+0.11638423800468445,0.0008749892585910857,0.11638423800468445,24199.0,404,2025-10-20 05:09:46.987105,,,,,,,,,
+,,,,404,2025-10-20 05:15:03.103874,0.14885897934436798,0.002449591178447008,0.14885897934436798,0.1564469039440155,0.0023540682159364223,0.1564469039440155,,,
+,,,,404,2025-10-20 05:15:30.323075,,,,,,,0.1420534998178482,0.0022194411139935255,0.1420534998178482
+0.12013847380876541,0.002824803115800023,0.12013847380876541,24249.0,405,2025-10-20 05:17:24.582438,,,,,,,,,
+0.13336299359798431,0.0009440651629120111,0.13336299359798431,24299.0,405,2025-10-20 05:21:54.198528,,,,,,,,,
+,,,,405,2025-10-20 05:23:28.155730,0.15172818303108215,0.002914159558713436,0.15172818303108215,0.1542278379201889,0.0025036537554115057,0.1542278379201889,,,
+,,,,405,2025-10-20 05:23:53.064680,,,,,,,0.14851289987564087,0.0023098494857549667,0.14851289987564087
+0.1647483855485916,0.0014076820807531476,0.1647483855485916,24349.0,406,2025-10-20 05:29:48.001840,,,,,,,,,
+,,,,406,2025-10-20 05:32:03.560052,0.148956298828125,0.0027102914173156023,0.148956298828125,0.15456128120422363,0.0032394088339060545,0.15456128120422363,,,
+,,,,406,2025-10-20 05:32:28.792943,,,,,,,0.15083472430706024,0.002336803823709488,0.15083472430706024
+0.12934646010398865,0.0014719775645062327,0.12934646010398865,24399.0,407,2025-10-20 05:36:56.983393,,,,,,,,,
+,,,,407,2025-10-20 05:40:07.033364,0.1540927141904831,0.0021282027009874582,0.1540927141904831,0.16051800549030304,0.0031147252302616835,0.16051800549030304,,,
+,,,,407,2025-10-20 05:40:33.006342,,,,,,,0.1494429111480713,0.002125887433066964,0.1494429111480713
+0.11143231391906738,0.0006919080042280257,0.11143231391906738,24449.0,408,2025-10-20 05:44:49.244142,,,,,,,,,
+,,,,408,2025-10-20 05:49:16.776363,0.16039426624774933,0.003053360851481557,0.16039426624774933,0.1543959230184555,0.002714344998821616,0.1543959230184555,,,
+,,,,408,2025-10-20 05:49:41.952820,,,,,,,0.1466294825077057,0.0021339436061680317,0.1466294825077057
+0.15404319763183594,0.004950147587805986,0.15404319763183594,24499.0,409,2025-10-20 05:52:51.612252,,,,,,,,,
+,,,,409,2025-10-20 05:57:45.320049,0.15307950973510742,0.0025378260761499405,0.15307950973510742,0.14765626192092896,0.002881743712350726,0.14765626192092896,,,
+,,,,409,2025-10-20 05:58:10.885602,,,,,,,0.14796361327171326,0.0019841196481138468,0.14796361327171326
+0.13410110771656036,0.0014041222166270018,0.13410110771656036,24549.0,410,2025-10-20 05:59:56.346754,,,,,,,,,
+0.1549886018037796,0.0025197211652994156,0.1549886018037796,24599.0,410,2025-10-20 06:04:38.192003,,,,,,,,,
+,,,,410,2025-10-20 06:06:13.554982,0.1496868133544922,0.002763441763818264,0.1496868133544922,0.1604354977607727,0.002059108577668667,0.1604354977607727,,,
+,,,,410,2025-10-20 06:06:39.917615,,,,,,,0.14596602320671082,0.002194194821640849,0.14596602320671082
+0.14884699881076813,0.003230936359614134,0.14884699881076813,24649.0,411,2025-10-20 06:12:41.360580,,,,,,,,,
+,,,,411,2025-10-20 06:15:03.234597,0.16059595346450806,0.004837671760469675,0.16059595346450806,0.16674365103244781,0.001704186899587512,0.16674365103244781,,,
+,,,,411,2025-10-20 06:15:29.232715,,,,,,,0.15064232051372528,0.0028194442857056856,0.15064232051372528
+0.1494724005460739,0.002958781085908413,0.1494724005460739,24699.0,412,2025-10-20 06:20:31.886906,,,,,,,,,
+,,,,412,2025-10-20 06:23:38.492458,0.1588125377893448,0.0031499110627919436,0.1588125377893448,0.14464977383613586,0.0017308407695963979,0.14464977383613586,,,
+,,,,412,2025-10-20 06:24:09.125475,,,,,,,0.14621394872665405,0.002359862672165036,0.14621394872665405
+0.13755162060260773,0.0028504575602710247,0.13755162060260773,24749.0,413,2025-10-20 06:27:44.319850,,,,,,,,,
+,,,,413,2025-10-20 06:32:09.302420,0.16356758773326874,0.004361632280051708,0.16356758773326874,0.15336251258850098,0.0022986342664808035,0.15336251258850098,,,
+,,,,413,2025-10-20 06:32:36.121709,,,,,,,0.1486446112394333,0.0020474374759942293,0.1486446112394333
+0.15418849885463715,0.0018917672568932176,0.15418849885463715,24799.0,414,2025-10-20 06:35:34.484654,,,,,,,,,
+,,,,414,2025-10-20 06:40:34.573052,0.14261846244335175,0.0022481256164610386,0.14261846244335175,0.15649159252643585,0.0015069828368723392,0.15649159252643585,,,
+,,,,414,2025-10-20 06:41:01.680209,,,,,,,0.14985276758670807,0.0021451341453939676,0.14985276758670807
+0.13710759580135345,0.003209706861525774,0.13710759580135345,24849.0,415,2025-10-20 06:42:58.755971,,,,,,,,,
+0.1668255627155304,0.0018874049419537187,0.1668255627155304,24899.0,415,2025-10-20 06:47:12.621739,,,,,,,,,
+,,,,415,2025-10-20 06:48:51.293439,0.16073718667030334,0.0020503089763224125,0.16073718667030334,0.16078339517116547,0.0025691401679068804,0.16078339517116547,,,
+,,,,415,2025-10-20 06:49:17.542689,,,,,,,0.14568094909191132,0.0023340850602835417,0.14568094909191132
+0.1972753256559372,0.001895022694952786,0.1972753256559372,24949.0,416,2025-10-20 06:54:57.821437,,,,,,,,,
+,,,,416,2025-10-20 06:57:25.309141,0.14449374377727509,0.001737871440127492,0.14449374377727509,0.1625400334596634,0.0025605249684304,0.1625400334596634,,,
+,,,,416,2025-10-20 06:57:52.209703,,,,,,,0.14951680600643158,0.001989214913919568,0.14951680600643158
+0.1383143812417984,0.0009583330247551203,0.1383143812417984,24999.0,417,2025-10-20 07:02:31.781788,,,,,,,,,
+,,,,417,2025-10-20 07:05:45.831597,0.15379256010055542,0.001561251818202436,0.15379256010055542,0.15649567544460297,0.002696278039366007,0.15649567544460297,,,
+,,,,417,2025-10-20 07:06:12.701129,,,,,,,0.15187855064868927,0.002131423680111766,0.15187855064868927
+0.16960586607456207,0.001728698844090104,0.16960586607456207,25049.0,418,2025-10-20 07:10:13.795848,,,,,,,,,
+,,,,418,2025-10-20 07:14:15.797878,0.1413556933403015,0.002559460699558258,0.1413556933403015,0.15223872661590576,0.002326816786080599,0.15223872661590576,,,
+,,,,418,2025-10-20 07:14:43.099608,,,,,,,0.15303616225719452,0.002221408998593688,0.15303616225719452
+0.14368484914302826,0.001163708628155291,0.14368484914302826,25099.0,419,2025-10-20 07:17:23.763188,,,,,,,,,
+,,,,419,2025-10-20 07:22:38.415085,0.16612926125526428,0.003442400600761175,0.16612926125526428,0.1473076045513153,0.0027315146289765835,0.1473076045513153,,,
+,,,,419,2025-10-20 07:23:04.609651,,,,,,,0.14706841111183167,0.002131475368514657,0.14706841111183167
+0.14950673282146454,0.0016424476634711027,0.14950673282146454,25149.0,420,2025-10-20 07:24:55.184340,,,,,,,,,
+0.19123926758766174,0.0033837431110441685,0.19123926758766174,25199.0,420,2025-10-20 07:29:32.689770,,,,,,,,,
+,,,,420,2025-10-20 07:31:06.500116,0.138157919049263,0.001879986491985619,0.138157919049263,0.14615888893604279,0.001572527107782662,0.14615888893604279,,,
+,,,,420,2025-10-20 07:31:33.225315,,,,,,,0.149504616856575,0.002265415620058775,0.149504616856575
+0.12374524772167206,0.002154082292690873,0.12374524772167206,25249.0,421,2025-10-20 07:37:34.856868,,,,,,,,,
+,,,,421,2025-10-20 07:39:50.628869,0.15069301426410675,0.002688013482838869,0.15069301426410675,0.16324512660503387,0.0034987505059689283,0.16324512660503387,,,
+,,,,421,2025-10-20 07:40:16.942909,,,,,,,0.14558444917201996,0.0020571912173181772,0.14558444917201996
+0.1664644032716751,0.0024791022296994925,0.1664644032716751,25299.0,422,2025-10-20 07:45:17.892803,,,,,,,,,
+,,,,422,2025-10-20 07:48:20.370033,0.15033119916915894,0.0019045287044718862,0.15033119916915894,0.1504213958978653,0.0022720119450241327,0.1504213958978653,,,
+,,,,422,2025-10-20 07:48:47.267654,,,,,,,0.14946122467517853,0.002127494663000107,0.14946122467517853
+0.17408673465251923,0.0015113261761143804,0.17408673465251923,25349.0,423,2025-10-20 07:52:38.244054,,,,,,,,,
+,,,,423,2025-10-20 07:56:42.352839,0.15634587407112122,0.0023599956184625626,0.15634587407112122,0.15708044171333313,0.0018796171061694622,0.15708044171333313,,,
+,,,,423,2025-10-20 07:57:09.978340,,,,,,,0.14890101552009583,0.002130872569978237,0.14890101552009583
+0.13427628576755524,0.0009189024567604065,0.13427628576755524,25399.0,424,2025-10-20 07:59:57.055333,,,,,,,,,
+,,,,424,2025-10-20 08:05:24.201698,0.1470429003238678,0.0024816638324409723,0.1470429003238678,0.15055064857006073,0.0017185601172968745,0.15055064857006073,,,
+,,,,424,2025-10-20 08:05:51.471882,,,,,,,0.1474216878414154,0.002188065554946661,0.1474216878414154
+0.14261233806610107,0.003021224867552519,0.14261233806610107,25449.0,425,2025-10-20 08:07:42.986856,,,,,,,,,
+0.13851585984230042,0.0012002075091004372,0.13851585984230042,25499.0,425,2025-10-20 08:12:19.472796,,,,,,,,,
+,,,,425,2025-10-20 08:13:56.588493,0.15178559720516205,0.00213491078466177,0.15178559720516205,0.14736294746398926,0.002888330491259694,0.14736294746398926,,,
+,,,,425,2025-10-20 08:14:23.458537,,,,,,,0.15045307576656342,0.002518814755603671,0.15045307576656342
+0.15496373176574707,0.0021841845009475946,0.15496373176574707,25549.0,426,2025-10-20 08:20:17.623686,,,,,,,,,
+,,,,426,2025-10-20 08:22:40.034173,0.15591268241405487,0.002413650741800666,0.15591268241405487,0.14945657551288605,0.0014819600619375706,0.14945657551288605,,,
+,,,,426,2025-10-20 08:23:06.581272,,,,,,,0.14802907407283783,0.002329824725165963,0.14802907407283783
+0.19666048884391785,0.0021320534870028496,0.19666048884391785,25599.0,427,2025-10-20 08:27:45.730763,,,,,,,,,
+,,,,427,2025-10-20 08:31:02.556457,0.16022364795207977,0.0015168075915426016,0.16022364795207977,0.14428557455539703,0.0015113286208361387,0.14428557455539703,,,
+,,,,427,2025-10-20 08:31:28.997640,,,,,,,0.1488952934741974,0.0022181877866387367,0.1488952934741974
+0.17456166446208954,0.0015677781775593758,0.17456166446208954,25649.0,428,2025-10-20 08:35:13.671714,,,,,,,,,
+,,,,428,2025-10-20 08:39:23.285102,0.14836721122264862,0.002013541292399168,0.14836721122264862,0.14781980216503143,0.0027467350009828806,0.14781980216503143,,,
+,,,,428,2025-10-20 08:39:50.028745,,,,,,,0.14611968398094177,0.0018246447434648871,0.14611968398094177
+0.1369837075471878,0.0027135624550282955,0.1369837075471878,25699.0,429,2025-10-20 08:42:43.815809,,,,,,,,,
+,,,,429,2025-10-20 08:48:01.645123,0.14500175416469574,0.0012515635462477803,0.14500175416469574,0.1476997286081314,0.0025376828853040934,0.1476997286081314,,,
+,,,,429,2025-10-20 08:48:27.549611,,,,,,,0.14847998321056366,0.0023306752555072308,0.14847998321056366
+0.11447703838348389,0.0007712098304182291,0.11447703838348389,25749.0,430,2025-10-20 08:50:18.180832,,,,,,,,,
+0.1318281590938568,0.000861560576595366,0.1318281590938568,25799.0,430,2025-10-20 08:54:50.952696,,,,,,,,,
+,,,,430,2025-10-20 08:56:25.379087,0.15407487750053406,0.0028156989719718695,0.15407487750053406,0.15833793580532074,0.003754129633307457,0.15833793580532074,,,
+,,,,430,2025-10-20 08:56:51.234103,,,,,,,0.14608021080493927,0.0020293279085308313,0.14608021080493927
+0.17006832361221313,0.004767164587974548,0.17006832361221313,25849.0,431,2025-10-20 09:02:28.993469,,,,,,,,,
+,,,,431,2025-10-20 09:05:09.412734,0.15099841356277466,0.0031184155959635973,0.15099841356277466,0.15629197657108307,0.0031658820807933807,0.15629197657108307,,,
+,,,,431,2025-10-20 09:05:36.846508,,,,,,,0.14613230526447296,0.0022781442385166883,0.14613230526447296
+0.13369044661521912,0.002039757091552019,0.13369044661521912,25899.0,432,2025-10-20 09:10:19.011356,,,,,,,,,
+,,,,432,2025-10-20 09:13:32.139613,0.14640238881111145,0.002433380112051964,0.14640238881111145,0.14665833115577698,0.0013471255078911781,0.14665833115577698,,,
+,,,,432,2025-10-20 09:13:59.440183,,,,,,,0.1479390263557434,0.002091315109282732,0.1479390263557434
+0.13560517132282257,0.004598353523761034,0.13560517132282257,25949.0,433,2025-10-20 09:18:02.907338,,,,,,,,,
+,,,,433,2025-10-20 09:22:16.315481,0.14854629337787628,0.001488788053393364,0.14854629337787628,0.15631861984729767,0.002067845780402422,0.15631861984729767,,,
+,,,,433,2025-10-20 09:22:42.840244,,,,,,,0.1496078073978424,0.0022615327034145594,0.1496078073978424
+0.14937905967235565,0.004113087896257639,0.14937905967235565,25999.0,434,2025-10-20 09:25:35.368978,,,,,,,,,
+,,,,434,2025-10-20 09:30:53.032269,0.15206539630889893,0.0027200663462281227,0.15206539630889893,0.1438017338514328,0.0012126018991693854,0.1438017338514328,,,
+,,,,434,2025-10-20 09:31:20.143619,,,,,,,0.14892297983169556,0.002267783274874091,0.14892297983169556
+0.17683792114257812,0.002856506034731865,0.17683792114257812,26049.0,435,2025-10-20 09:33:18.119256,,,,,,,,,
+0.13534991443157196,0.001336121466010809,0.13534991443157196,26099.0,435,2025-10-20 09:37:46.038147,,,,,,,,,
+,,,,435,2025-10-20 09:39:16.981491,0.14354580640792847,0.0034708245657384396,0.14354580640792847,0.16090980172157288,0.002626778557896614,0.16090980172157288,,,
+,,,,435,2025-10-20 09:39:43.264235,,,,,,,0.14854244887828827,0.0022747376933693886,0.14854244887828827
+0.17335955798625946,0.0024009316693991423,0.17335955798625946,26149.0,436,2025-10-20 09:45:20.739879,,,,,,,,,
+,,,,436,2025-10-20 09:47:34.551219,0.1552121639251709,0.0018116389401257038,0.1552121639251709,0.15948906540870667,0.0016922514187172055,0.15948906540870667,,,
+,,,,436,2025-10-20 09:47:59.780259,,,,,,,0.15053915977478027,0.0023962869308888912,0.15053915977478027
+0.1618918478488922,0.0011711919214576483,0.1618918478488922,26199.0,437,2025-10-20 09:52:47.017293,,,,,,,,,
+,,,,437,2025-10-20 09:56:03.948933,0.15056045353412628,0.0032681142911314964,0.15056045353412628,0.14960961043834686,0.0017859431682154536,0.14960961043834686,,,
+,,,,437,2025-10-20 09:56:29.691816,,,,,,,0.15008065104484558,0.0022202336695045233,0.15008065104484558
+0.1431731879711151,0.001144477166235447,0.1431731879711151,26249.0,438,2025-10-20 10:00:38.467636,,,,,,,,,
+,,,,438,2025-10-20 10:04:41.401648,0.1567750722169876,0.002272040117532015,0.1567750722169876,0.15928857028484344,0.0020099952816963196,0.15928857028484344,,,
+,,,,438,2025-10-20 10:05:06.644000,,,,,,,0.14376388490200043,0.00199430831708014,0.14376388490200043
+0.11668707430362701,0.0007570773013867438,0.11668707430362701,26299.0,439,2025-10-20 10:08:07.196540,,,,,,,,,
+,,,,439,2025-10-20 10:13:11.550052,0.14537553489208221,0.0014847480924800038,0.14537553489208221,0.14810846745967865,0.0013151755556464195,0.14810846745967865,,,
+,,,,439,2025-10-20 10:13:38.252719,,,,,,,0.15150555968284607,0.0021739916410297155,0.15150555968284607
+0.14318078756332397,0.0033568982034921646,0.14318078756332397,26349.0,440,2025-10-20 10:15:37.387961,,,,,,,,,
+0.15949268639087677,0.0021552483085542917,0.15949268639087677,26399.0,440,2025-10-20 10:20:23.234392,,,,,,,,,
+,,,,440,2025-10-20 10:21:58.458670,0.1387399286031723,0.0023133058566600084,0.1387399286031723,0.13608671724796295,0.0009800497209653258,0.13608671724796295,,,
+,,,,440,2025-10-20 10:22:47.986154,,,,,,,0.14963437616825104,0.002444592537358403,0.14963437616825104
+0.13165432214736938,0.0009345855214633048,0.13165432214736938,26449.0,441,2025-10-20 10:28:28.102868,,,,,,,,,
+,,,,441,2025-10-20 10:30:49.666759,0.14878268539905548,0.0026889988221228123,0.14878268539905548,0.16260668635368347,0.002157550770789385,0.16260668635368347,,,
+,,,,441,2025-10-20 10:31:16.769820,,,,,,,0.14728482067584991,0.00205877423286438,0.14728482067584991
+0.16681303083896637,0.0038007234688848257,0.16681303083896637,26499.0,442,2025-10-20 10:36:18.939633,,,,,,,,,
+,,,,442,2025-10-20 10:39:27.830071,0.16384510695934296,0.0029642251320183277,0.16384510695934296,0.15335769951343536,0.003576250048354268,0.15335769951343536,,,
+,,,,442,2025-10-20 10:39:54.749846,,,,,,,0.14810597896575928,0.00227341684512794,0.14810597896575928
+0.1612144410610199,0.002244355855509639,0.1612144410610199,26549.0,443,2025-10-20 10:43:49.298581,,,,,,,,,
+,,,,443,2025-10-20 10:47:56.034992,0.14635403454303741,0.0028474959544837475,0.14635403454303741,0.1526506245136261,0.0025999690406024456,0.1526506245136261,,,
+,,,,443,2025-10-20 10:48:22.121279,,,,,,,0.15069034695625305,0.0025595773477107286,0.15069034695625305
+0.14250828325748444,0.0008288793615065515,0.14250828325748444,26599.0,444,2025-10-20 10:51:12.385407,,,,,,,,,
+,,,,444,2025-10-20 10:56:03.560292,0.14720375835895538,0.0018323234980925918,0.14720375835895538,0.16396264731884003,0.003100675530731678,0.16396264731884003,,,
+,,,,444,2025-10-20 10:56:28.978715,,,,,,,0.1455947905778885,0.0021363866981118917,0.1455947905778885
+0.17327824234962463,0.0020162530709058046,0.17327824234962463,26649.0,445,2025-10-20 10:58:20.948777,,,,,,,,,
+0.18264815211296082,0.0014487181324511766,0.18264815211296082,26699.0,445,2025-10-20 11:03:00.631008,,,,,,,,,
+,,,,445,2025-10-20 11:04:41.430839,0.14895302057266235,0.0020639875438064337,0.14895302057266235,0.16452880203723907,0.003014041343703866,0.16452880203723907,,,
+,,,,445,2025-10-20 11:05:08.749705,,,,,,,0.15084749460220337,0.0022413835395127535,0.15084749460220337
+0.13875506818294525,0.0011443434050306678,0.13875506818294525,26749.0,446,2025-10-20 11:10:40.133605,,,,,,,,,
+,,,,446,2025-10-20 11:12:59.907061,0.15692974627017975,0.0027877576649188995,0.15692974627017975,0.14587359130382538,0.0014908184530213475,0.14587359130382538,,,
+,,,,446,2025-10-20 11:13:26.101855,,,,,,,0.14704975485801697,0.002221951959654689,0.14704975485801697
+0.13384051620960236,0.0036384682171046734,0.13384051620960236,26799.0,447,2025-10-20 11:18:32.235708,,,,,,,,,
+,,,,447,2025-10-20 11:21:35.682385,0.15375301241874695,0.0029638500418514013,0.15375301241874695,0.14526961743831635,0.0028444717172533274,0.14526961743831635,,,
+,,,,447,2025-10-20 11:22:03.244423,,,,,,,0.14387451112270355,0.0018235561437904835,0.14387451112270355
+0.12799136340618134,0.0008304265793412924,0.12799136340618134,26849.0,448,2025-10-20 11:26:13.448885,,,,,,,,,
+,,,,448,2025-10-20 11:30:11.942501,0.14845947921276093,0.0023799159098416567,0.14845947921276093,0.1439211070537567,0.002601241460070014,0.1439211070537567,,,
+,,,,448,2025-10-20 11:30:38.891795,,,,,,,0.15104255080223083,0.002207385143265128,0.15104255080223083
+0.15890783071517944,0.0020797711331397295,0.15890783071517944,26899.0,449,2025-10-20 11:33:28.771476,,,,,,,,,
+,,,,449,2025-10-20 11:38:46.592435,0.14993882179260254,0.0028134349267929792,0.14993882179260254,0.1575232893228531,0.0018333863699808717,0.1575232893228531,,,
+,,,,449,2025-10-20 11:39:12.719865,,,,,,,0.1466059535741806,0.0020387794356793165,0.1466059535741806
+0.1396588236093521,0.001194045296870172,0.1396588236093521,26949.0,450,2025-10-20 11:41:05.931923,,,,,,,,,
+0.130869522690773,0.0009645755053497851,0.130869522690773,26999.0,450,2025-10-20 11:45:40.290442,,,,,,,,,
+,,,,450,2025-10-20 11:47:17.026745,0.1540953367948532,0.004184746649116278,0.1540953367948532,0.15508784353733063,0.003314516507089138,0.15508784353733063,,,
+,,,,450,2025-10-20 11:47:43.223410,,,,,,,0.1496974229812622,0.002262618625536561,0.1496974229812622
+0.15896981954574585,0.003928639460355043,0.15896981954574585,27049.0,451,2025-10-20 11:53:07.748958,,,,,,,,,
+,,,,451,2025-10-20 11:55:36.256258,0.15960614383220673,0.0023672140669077635,0.15960614383220673,0.15483945608139038,0.0015064632752910256,0.15483945608139038,,,
+,,,,451,2025-10-20 11:56:04.579462,,,,,,,0.1496487259864807,0.0022779314313083887,0.1496487259864807
+0.15311375260353088,0.0011332191061228514,0.15311375260353088,27099.0,452,2025-10-20 12:01:02.889697,,,,,,,,,
+,,,,452,2025-10-20 12:04:17.959147,0.14211495220661163,0.0017756654415279627,0.14211495220661163,0.1384965181350708,0.001517599681392312,0.1384965181350708,,,
+,,,,452,2025-10-20 12:05:08.402577,,,,,,,0.1525489240884781,0.0023803450167179108,0.1525489240884781
+0.17642928659915924,0.0017762555507943034,0.17642928659915924,27149.0,453,2025-10-20 12:08:40.503933,,,,,,,,,
+,,,,453,2025-10-20 12:13:18.230248,0.1440759003162384,0.0031369924545288086,0.1440759003162384,0.15783657133579254,0.0026717742439359426,0.15783657133579254,,,
+,,,,453,2025-10-20 12:13:45.763208,,,,,,,0.14621666073799133,0.002067670924589038,0.14621666073799133
+0.14096471667289734,0.00112696283031255,0.14096471667289734,27199.0,454,2025-10-20 12:16:48.050930,,,,,,,,,
+,,,,454,2025-10-20 12:22:09.983051,0.14634212851524353,0.002048474969342351,0.14634212851524353,0.15306682884693146,0.0018985944334417582,0.15306682884693146,,,
+,,,,454,2025-10-20 12:22:36.317253,,,,,,,0.14718054234981537,0.0019994534086436033,0.14718054234981537
+0.136477991938591,0.0011947855819016695,0.136477991938591,27249.0,455,2025-10-20 12:24:25.645097,,,,,,,,,
+0.1272977590560913,0.0008291340200230479,0.1272977590560913,27299.0,455,2025-10-20 12:29:34.503697,,,,,,,,,
+,,,,455,2025-10-20 12:31:12.753210,0.15776889026165009,0.002682189689949155,0.15776889026165009,0.14825303852558136,0.0019910652190446854,0.14825303852558136,,,
+,,,,455,2025-10-20 12:31:38.705106,,,,,,,0.14833584427833557,0.0022566448897123337,0.14833584427833557
+0.16399431228637695,0.004345193039625883,0.16399431228637695,27349.0,456,2025-10-20 12:37:09.220146,,,,,,,,,
+,,,,456,2025-10-20 12:39:36.159693,0.14895470440387726,0.002812324557453394,0.14895470440387726,0.14084745943546295,0.0026355728041380644,0.14084745943546295,,,
+,,,,456,2025-10-20 12:40:04.606737,,,,,,,0.14689315855503082,0.002230200683698058,0.14689315855503082
+0.16581319272518158,0.0014537248061969876,0.16581319272518158,27399.0,457,2025-10-20 12:45:11.992979,,,,,,,,,
+,,,,457,2025-10-20 12:48:52.490364,0.15034614503383636,0.00241286912932992,0.15034614503383636,0.1487196385860443,0.0020276280120015144,0.1487196385860443,,,
+,,,,457,2025-10-20 12:49:20.497158,,,,,,,0.14515317976474762,0.002017964841797948,0.14515317976474762
+0.1366899013519287,0.000983119709417224,0.1366899013519287,27449.0,458,2025-10-20 12:53:17.056661,,,,,,,,,
+,,,,458,2025-10-20 12:57:30.293736,0.15845128893852234,0.003201565006747842,0.15845128893852234,0.1575642079114914,0.0023450155276805162,0.1575642079114914,,,
+,,,,458,2025-10-20 12:57:57.093195,,,,,,,0.14872847497463226,0.0023503631819039583,0.14872847497463226
+0.14419303834438324,0.000914351490791887,0.14419303834438324,27499.0,459,2025-10-20 13:00:47.837218,,,,,,,,,
+,,,,459,2025-10-20 13:06:08.809549,0.1471962034702301,0.0013079936616122723,0.1471962034702301,0.15240563452243805,0.002770614344626665,0.15240563452243805,,,
+,,,,459,2025-10-20 13:06:35.414486,,,,,,,0.14850901067256927,0.0021375298965722322,0.14850901067256927
+0.15719866752624512,0.0017676461720839143,0.15719866752624512,27549.0,460,2025-10-20 13:08:19.449460,,,,,,,,,
+0.16846272349357605,0.002198859117925167,0.16846272349357605,27599.0,460,2025-10-20 13:13:10.678086,,,,,,,,,
+,,,,460,2025-10-20 13:14:49.299409,0.14764952659606934,0.002756207250058651,0.14764952659606934,0.15249691903591156,0.0020691982936114073,0.15249691903591156,,,
+,,,,460,2025-10-20 13:15:17.219093,,,,,,,0.14678242802619934,0.002329618204385042,0.14678242802619934
+0.15751776099205017,0.0015062413876876235,0.15751776099205017,27649.0,461,2025-10-20 13:21:37.786782,,,,,,,,,
+,,,,461,2025-10-20 13:23:51.035688,0.1496344357728958,0.0013260089326649904,0.1496344357728958,0.15297847986221313,0.0023933472111821175,0.15297847986221313,,,
+,,,,461,2025-10-20 13:24:18.234159,,,,,,,0.1479422152042389,0.0022902025375515223,0.1479422152042389
+0.13303080201148987,0.0014087350573390722,0.13303080201148987,27699.0,462,2025-10-20 13:29:10.772847,,,,,,,,,
+,,,,462,2025-10-20 13:32:20.079685,0.1453695148229599,0.002088218694552779,0.1453695148229599,0.14347214996814728,0.0012515931157395244,0.14347214996814728,,,
+,,,,462,2025-10-20 13:32:45.917995,,,,,,,0.150303915143013,0.0020317118614912033,0.150303915143013
+0.153456449508667,0.004223027732223272,0.153456449508667,27749.0,463,2025-10-20 13:36:37.486768,,,,,,,,,
+,,,,463,2025-10-20 13:41:01.198938,0.14542384445667267,0.002840286586433649,0.14542384445667267,0.14904652535915375,0.0019639702513813972,0.14904652535915375,,,
+,,,,463,2025-10-20 13:41:28.069368,,,,,,,0.14599186182022095,0.002391365822404623,0.14599186182022095
+0.16246335208415985,0.0015606319066137075,0.16246335208415985,27799.0,464,2025-10-20 13:44:47.851176,,,,,,,,,
+,,,,464,2025-10-20 13:50:10.623871,0.14526088535785675,0.0025021571200340986,0.14526088535785675,0.14591319859027863,0.002332719974219799,0.14591319859027863,,,
+,,,,464,2025-10-20 13:50:36.131112,,,,,,,0.1494322568178177,0.0024911221116781235,0.1494322568178177
+0.1548972874879837,0.002520583337172866,0.1548972874879837,27849.0,465,2025-10-20 13:52:24.544264,,,,,,,,,
+0.1405075043439865,0.0013327501947060227,0.1405075043439865,27899.0,465,2025-10-20 13:57:18.660654,,,,,,,,,
+,,,,465,2025-10-20 13:58:59.977647,0.1482153683900833,0.0035403966903686523,0.1482153683900833,0.1453719437122345,0.001594628905877471,0.1453719437122345,,,
+,,,,465,2025-10-20 13:59:29.388108,,,,,,,0.14818231761455536,0.0023634324315935373,0.14818231761455536
+0.14465147256851196,0.0020904839038848877,0.14465147256851196,27949.0,466,2025-10-20 14:05:33.461321,,,,,,,,,
+,,,,466,2025-10-20 14:07:54.665119,0.14954979717731476,0.003304943209514022,0.14954979717731476,0.1537444144487381,0.002659221412613988,0.1537444144487381,,,
+,,,,466,2025-10-20 14:08:21.069448,,,,,,,0.14676249027252197,0.0021047985646873713,0.14676249027252197
+0.15840159356594086,0.0019139419309794903,0.15840159356594086,27999.0,467,2025-10-20 14:13:37.637894,,,,,,,,,
+,,,,467,2025-10-20 14:16:52.456403,0.15698698163032532,0.002612787764519453,0.15698698163032532,0.15706337988376617,0.003821446094661951,0.15706337988376617,,,
+,,,,467,2025-10-20 14:17:19.499335,,,,,,,0.1421719789505005,0.0021195218432694674,0.1421719789505005
+0.13932417333126068,0.0019503950607031584,0.13932417333126068,28049.0,468,2025-10-20 14:21:35.165771,,,,,,,,,
+,,,,468,2025-10-20 14:25:33.878170,0.15314283967018127,0.003108709817752242,0.15314283967018127,0.16234326362609863,0.0018787893932312727,0.16234326362609863,,,
+,,,,468,2025-10-20 14:26:00.550100,,,,,,,0.15065373480319977,0.0026051392778754234,0.15065373480319977
+0.15205205976963043,0.0012601633789017797,0.15205205976963043,28099.0,469,2025-10-20 14:28:48.613097,,,,,,,,,
+,,,,469,2025-10-20 14:33:58.877653,0.15036088228225708,0.002071159891784191,0.15036088228225708,0.15684562921524048,0.0014150586212053895,0.15684562921524048,,,
+,,,,469,2025-10-20 14:34:26.797527,,,,,,,0.14760246872901917,0.0022466538939625025,0.14760246872901917
+0.14629307389259338,0.003680151654407382,0.14629307389259338,28149.0,470,2025-10-20 14:36:16.080990,,,,,,,,,
+0.14108875393867493,0.0033939029090106487,0.14108875393867493,28199.0,470,2025-10-20 14:40:47.609198,,,,,,,,,
+,,,,470,2025-10-20 14:42:25.863683,0.150849387049675,0.002272541867569089,0.150849387049675,0.14801065623760223,0.0014153070515021682,0.14801065623760223,,,
+,,,,470,2025-10-20 14:42:53.284775,,,,,,,0.1474541425704956,0.0022591722663491964,0.1474541425704956
+0.13999898731708527,0.0016153235919773579,0.13999898731708527,28249.0,471,2025-10-20 14:48:52.209800,,,,,,,,,
+,,,,471,2025-10-20 14:51:07.309671,0.13910524547100067,0.0013769761426374316,0.13910524547100067,0.14631083607673645,0.0015917631099000573,0.14631083607673645,,,
+,,,,471,2025-10-20 14:51:36.012984,,,,,,,0.14885999262332916,0.0023871874436736107,0.14885999262332916
+0.17263628542423248,0.0014898024965077639,0.17263628542423248,28299.0,472,2025-10-20 14:56:27.564689,,,,,,,,,
+,,,,472,2025-10-20 14:59:47.127816,0.14221680164337158,0.0014495581854134798,0.14221680164337158,0.15934409201145172,0.0017543979920446873,0.15934409201145172,,,
+,,,,472,2025-10-20 15:00:13.182323,,,,,,,0.1488494873046875,0.002088724635541439,0.1488494873046875
+0.14587390422821045,0.0017675042618066072,0.14587390422821045,28349.0,473,2025-10-20 15:04:14.898617,,,,,,,,,
+,,,,473,2025-10-20 15:08:14.588970,0.14546990394592285,0.0021173444110900164,0.14546990394592285,0.14143790304660797,0.001842967001721263,0.14143790304660797,,,
+,,,,473,2025-10-20 15:08:42.953461,,,,,,,0.14283886551856995,0.0019279089756309986,0.14283886551856995
+0.11653731763362885,0.0011380364885553718,0.11653731763362885,28399.0,474,2025-10-20 15:11:24.406752,,,,,,,,,
+,,,,474,2025-10-20 15:16:44.143816,0.1521269530057907,0.002775288885459304,0.1521269530057907,0.1585085391998291,0.0022936139721423388,0.1585085391998291,,,
+,,,,474,2025-10-20 15:17:12.369198,,,,,,,0.143881157040596,0.0021299358922988176,0.143881157040596
+0.14485031366348267,0.0018481831066310406,0.14485031366348267,28449.0,475,2025-10-20 15:19:06.524620,,,,,,,,,
+0.11683354526758194,0.0009964547352865338,0.11683354526758194,28499.0,475,2025-10-20 15:23:33.552711,,,,,,,,,
+,,,,475,2025-10-20 15:25:06.127228,0.15343870222568512,0.0017946689622476697,0.15343870222568512,0.16637077927589417,0.0026261829771101475,0.16637077927589417,,,
+,,,,475,2025-10-20 15:25:33.154233,,,,,,,0.14800043404102325,0.0023928824812173843,0.14800043404102325
+0.14840367436408997,0.0009396078530699015,0.14840367436408997,28549.0,476,2025-10-20 15:31:05.859925,,,,,,,,,
+,,,,476,2025-10-20 15:33:34.622748,0.14959026873111725,0.0014531138585880399,0.14959026873111725,0.15260638296604156,0.002496421104297042,0.15260638296604156,,,
+,,,,476,2025-10-20 15:34:03.918004,,,,,,,0.14662480354309082,0.00220537674613297,0.14662480354309082
+0.1412019431591034,0.0038527066353708506,0.1412019431591034,28599.0,477,2025-10-20 15:39:26.142730,,,,,,,,,
+,,,,477,2025-10-20 15:42:41.058941,0.15432962775230408,0.001422195928171277,0.15432962775230408,0.16218560934066772,0.002860656240954995,0.16218560934066772,,,
+,,,,477,2025-10-20 15:43:08.097752,,,,,,,0.14098909497261047,0.0020796095486730337,0.14098909497261047
+0.15172308683395386,0.0015714856563135982,0.15172308683395386,28649.0,478,2025-10-20 15:46:52.243790,,,,,,,,,
+,,,,478,2025-10-20 15:51:03.644214,0.14182411134243011,0.002473553642630577,0.14182411134243011,0.15403300523757935,0.0030705805402249098,0.15403300523757935,,,
+,,,,478,2025-10-20 15:51:30.487358,,,,,,,0.1494482457637787,0.0019634426571428776,0.1494482457637787
+0.13754834234714508,0.003263008315116167,0.13754834234714508,28699.0,479,2025-10-20 15:54:26.296342,,,,,,,,,
+,,,,479,2025-10-20 15:59:43.639294,0.1501416712999344,0.001696841325610876,0.1501416712999344,0.14720870554447174,0.001530920621007681,0.14720870554447174,,,
+,,,,479,2025-10-20 16:00:09.867547,,,,,,,0.14514696598052979,0.002089847344905138,0.14514696598052979
+0.1331738978624344,0.005639027804136276,0.1331738978624344,28749.0,480,2025-10-20 16:02:00.152842,,,,,,,,,
+0.15380023419857025,0.0014227109495550394,0.15380023419857025,28799.0,480,2025-10-20 16:06:36.789067,,,,,,,,,
+,,,,480,2025-10-20 16:08:15.144051,0.14647501707077026,0.001686407602392137,0.14647501707077026,0.15402844548225403,0.0027695896569639444,0.15402844548225403,,,
+,,,,480,2025-10-20 16:08:41.212242,,,,,,,0.14869043231010437,0.002073918469250202,0.14869043231010437
+0.12109958380460739,0.005983998533338308,0.12109958380460739,28849.0,481,2025-10-20 16:14:28.560598,,,,,,,,,
+,,,,481,2025-10-20 16:16:45.939537,0.15412570536136627,0.0018855369416996837,0.15412570536136627,0.14468379318714142,0.0017447754507884383,0.14468379318714142,,,
+,,,,481,2025-10-20 16:17:13.123295,,,,,,,0.1444668173789978,0.0022130473516881466,0.1444668173789978
+0.13485997915267944,0.001848081941716373,0.13485997915267944,28899.0,482,2025-10-20 16:21:59.863545,,,,,,,,,
+,,,,482,2025-10-20 16:25:21.367965,0.15303178131580353,0.0026573846116662025,0.15303178131580353,0.1539965271949768,0.0026919131632894278,0.1539965271949768,,,
+,,,,482,2025-10-20 16:25:47.649108,,,,,,,0.1492524892091751,0.0024995561689138412,0.1492524892091751
+0.1614198386669159,0.00206182524561882,0.1614198386669159,28949.0,483,2025-10-20 16:29:35.458492,,,,,,,,,
+,,,,483,2025-10-20 16:33:55.181508,0.14106468856334686,0.0014920043759047985,0.14106468856334686,0.1484553962945938,0.0021162405610084534,0.1484553962945938,,,
+,,,,483,2025-10-20 16:34:22.093402,,,,,,,0.1442643702030182,0.0019216893706470728,0.1442643702030182
+0.17645947635173798,0.001808395842090249,0.17645947635173798,28999.0,484,2025-10-20 16:37:19.734970,,,,,,,,,
+,,,,484,2025-10-20 16:42:37.452960,0.15336371958255768,0.0022961401846259832,0.15336371958255768,0.15005047619342804,0.0015277471393346786,0.15005047619342804,,,
+,,,,484,2025-10-20 16:43:04.823955,,,,,,,0.14682437479496002,0.0022380982991307974,0.14682437479496002
+0.12877348065376282,0.000799774017650634,0.12877348065376282,29049.0,485,2025-10-20 16:44:57.411070,,,,,,,,,
+0.1517666131258011,0.0040717776864767075,0.1517666131258011,29099.0,485,2025-10-20 16:49:26.198930,,,,,,,,,
+,,,,485,2025-10-20 16:51:02.587896,0.14624379575252533,0.0022747248876839876,0.14624379575252533,0.1421899050474167,0.0017964825965464115,0.1421899050474167,,,
+,,,,485,2025-10-20 16:51:28.618193,,,,,,,0.14658716320991516,0.0023868775460869074,0.14658716320991516
+0.14032398164272308,0.0018540213350206614,0.14032398164272308,29149.0,486,2025-10-20 16:57:41.526378,,,,,,,,,
+,,,,486,2025-10-20 16:59:54.265670,0.1452753096818924,0.0025953107979148626,0.1452753096818924,0.15364262461662292,0.0023221990559250116,0.15364262461662292,,,
+,,,,486,2025-10-20 17:00:20.497537,,,,,,,0.14520138502120972,0.0023648710921406746,0.14520138502120972
+0.13613712787628174,0.0009557321900501847,0.13613712787628174,29199.0,487,2025-10-20 17:05:22.376043,,,,,,,,,
+,,,,487,2025-10-20 17:08:41.579650,0.14508605003356934,0.003100997069850564,0.14508605003356934,0.14330284297466278,0.0023579371627420187,0.14330284297466278,,,
+,,,,487,2025-10-20 17:09:09.194562,,,,,,,0.1497972309589386,0.002445279387757182,0.1497972309589386
+0.1414656937122345,0.0010407300433143973,0.1414656937122345,29249.0,488,2025-10-20 17:13:05.479232,,,,,,,,,
+,,,,488,2025-10-20 17:17:12.698659,0.14971737563610077,0.0019394952105358243,0.14971737563610077,0.14919573068618774,0.0015692329034209251,0.14919573068618774,,,
+,,,,488,2025-10-20 17:17:39.453170,,,,,,,0.1466166228055954,0.0024558156728744507,0.1466166228055954
+0.16468092799186707,0.004703932907432318,0.16468092799186707,29299.0,489,2025-10-20 17:20:36.175926,,,,,,,,,
+,,,,489,2025-10-20 17:25:37.287549,0.14439252018928528,0.0020094471983611584,0.14439252018928528,0.14323365688323975,0.0018672695150598884,0.14323365688323975,,,
+,,,,489,2025-10-20 17:26:04.043787,,,,,,,0.14717888832092285,0.0022701488342136145,0.14717888832092285
+0.1313975304365158,0.001411788398399949,0.1313975304365158,29349.0,490,2025-10-20 17:28:02.687137,,,,,,,,,
+0.1423090696334839,0.0023120318073779345,0.1423090696334839,29399.0,490,2025-10-20 17:32:42.790778,,,,,,,,,
+,,,,490,2025-10-20 17:34:20.234243,0.14465072751045227,0.0016569889849051833,0.14465072751045227,0.1506074219942093,0.00209988746792078,0.1506074219942093,,,
+,,,,490,2025-10-20 17:34:46.591092,,,,,,,0.14807017147541046,0.0022391367238014936,0.14807017147541046
+0.13049323856830597,0.0015349005116149783,0.13049323856830597,29449.0,491,2025-10-20 17:40:12.029768,,,,,,,,,
+,,,,491,2025-10-20 17:42:38.159529,0.14734572172164917,0.002746565267443657,0.14734572172164917,0.14734625816345215,0.0015901944134384394,0.14734625816345215,,,
+,,,,491,2025-10-20 17:43:05.514287,,,,,,,0.14953474700450897,0.002654857700690627,0.14953474700450897
+0.1395440399646759,0.0011685743229463696,0.1395440399646759,29499.0,492,2025-10-20 17:47:59.170911,,,,,,,,,
+,,,,492,2025-10-20 17:51:12.570569,0.15247589349746704,0.0022608141880482435,0.15247589349746704,0.14552663266658783,0.0027992187533527613,0.14552663266658783,,,
+,,,,492,2025-10-20 17:51:40.743251,,,,,,,0.1467519998550415,0.001768055371940136,0.1467519998550415
+0.14602866768836975,0.0016547940904274583,0.14602866768836975,29549.0,493,2025-10-20 17:55:45.586489,,,,,,,,,
+,,,,493,2025-10-20 17:59:48.375228,0.14756129682064056,0.0019505276577547193,0.14756129682064056,0.14561805129051208,0.0025332211516797543,0.14561805129051208,,,
+,,,,493,2025-10-20 18:00:14.771762,,,,,,,0.14681172370910645,0.00218903343193233,0.14681172370910645
+0.13033996522426605,0.0010600914247334003,0.13033996522426605,29599.0,494,2025-10-20 18:03:09.525626,,,,,,,,,
+,,,,494,2025-10-20 18:08:11.973571,0.1468578428030014,0.00234419503249228,0.1468578428030014,0.15843215584754944,0.0019359817961230874,0.15843215584754944,,,
+,,,,494,2025-10-20 18:08:39.351632,,,,,,,0.14746154844760895,0.0023463130928575993,0.14746154844760895
+0.142508402466774,0.001256723189726472,0.142508402466774,29649.0,495,2025-10-20 18:10:21.468478,,,,,,,,,
+0.1791539490222931,0.002272186568006873,0.1791539490222931,29699.0,495,2025-10-20 18:15:44.362054,,,,,,,,,
+,,,,495,2025-10-20 18:17:20.547990,0.15321387350559235,0.0036844743881374598,0.15321387350559235,0.15644708275794983,0.002191550098359585,0.15644708275794983,,,
+,,,,495,2025-10-20 18:17:46.576607,,,,,,,0.14455030858516693,0.0020654022227972746,0.14455030858516693
+0.14632512629032135,0.0019087629625573754,0.14632512629032135,29749.0,496,2025-10-20 18:23:52.410897,,,,,,,,,
+,,,,496,2025-10-20 18:26:06.689413,0.1496760994195938,0.002034491393715143,0.1496760994195938,0.1546430140733719,0.0024673156440258026,0.1546430140733719,,,
+,,,,496,2025-10-20 18:26:34.860407,,,,,,,0.14645494520664215,0.0023102157283574343,0.14645494520664215
+0.16513414680957794,0.0012286121491342783,0.16513414680957794,29799.0,497,2025-10-20 18:31:12.502087,,,,,,,,,
+,,,,497,2025-10-20 18:34:31.979693,0.15502718091011047,0.0029275580309331417,0.15502718091011047,0.1395787000656128,0.0016915322048589587,0.1395787000656128,,,
+,,,,497,2025-10-20 18:35:21.547810,,,,,,,0.14453846216201782,0.0018841144628822803,0.14453846216201782
+0.13594402372837067,0.004901279229670763,0.13594402372837067,29849.0,498,2025-10-20 18:39:18.463898,,,,,,,,,
+,,,,498,2025-10-20 18:43:27.372977,0.15023007988929749,0.00171094317920506,0.15023007988929749,0.1695767194032669,0.0028575256001204252,0.1695767194032669,,,
+,,,,498,2025-10-20 18:43:53.933612,,,,,,,0.14485344290733337,0.002350236289203167,0.14485344290733337
+0.15710535645484924,0.0017272364348173141,0.15710535645484924,29899.0,499,2025-10-20 18:46:46.315063,,,,,,,,,
+,,,,499,2025-10-20 18:52:06.198974,0.16428545117378235,0.001950216363184154,0.16428545117378235,0.15329702198505402,0.0028576378244906664,0.15329702198505402,,,
+,,,,499,2025-10-20 18:52:33.435719,,,,,,,0.14627951383590698,0.0023272172547876835,0.14627951383590698
+0.15100234746932983,0.0011219903826713562,0.15100234746932983,29949.0,500,2025-10-20 18:54:25.717155,,,,,,,,,
+0.15161657333374023,0.0014011827297508717,0.15161657333374023,29999.0,500,2025-10-20 18:58:59.174703,,,,,,,,,
+,,,,500,2025-10-20 19:00:34.469928,0.1536853313446045,0.0019046706147491932,0.1536853313446045,0.146746426820755,0.001471113064326346,0.146746426820755,,,
+,,,,500,2025-10-20 19:01:01.301183,,,,,,,0.14418146014213562,0.0020975356455892324,0.14418146014213562
+0.17897243797779083,0.00402863509953022,0.17897243797779083,30049.0,501,2025-10-20 19:06:51.030108,,,,,,,,,
+,,,,501,2025-10-20 19:09:02.780644,0.14889512956142426,0.0022572861053049564,0.14889512956142426,0.14223751425743103,0.0029393411241471767,0.14223751425743103,,,
+,,,,501,2025-10-20 19:09:29.320268,,,,,,,0.14753402769565582,0.002251993166282773,0.14753402769565582
+0.1474183052778244,0.002152313943952322,0.1474183052778244,30099.0,502,2025-10-20 19:14:23.609607,,,,,,,,,
+,,,,502,2025-10-20 19:17:41.969492,0.1551925539970398,0.0015107125509530306,0.1551925539970398,0.14950458705425262,0.0023450145963579416,0.14950458705425262,,,
+,,,,502,2025-10-20 19:18:09.686027,,,,,,,0.14687001705169678,0.001985399518162012,0.14687001705169678
+0.14031296968460083,0.0008826101548038423,0.14031296968460083,30149.0,503,2025-10-20 19:22:03.706828,,,,,,,,,
+,,,,503,2025-10-20 19:26:15.525293,0.1634991616010666,0.00254829996265471,0.1634991616010666,0.1484701931476593,0.0016061952337622643,0.1484701931476593,,,
+,,,,503,2025-10-20 19:26:42.759996,,,,,,,0.14532698690891266,0.002373981988057494,0.14532698690891266
+0.14183956384658813,0.0019870910327881575,0.14183956384658813,30199.0,504,2025-10-20 19:29:33.882243,,,,,,,,,
+,,,,504,2025-10-20 19:34:36.100726,0.1495206654071808,0.002374679548665881,0.1495206654071808,0.14903996884822845,0.0020976390223950148,0.14903996884822845,,,
+,,,,504,2025-10-20 19:35:03.725436,,,,,,,0.14206330478191376,0.0018436710815876722,0.14206330478191376
+0.14954768121242523,0.001517328666523099,0.14954768121242523,30249.0,505,2025-10-20 19:36:55.094767,,,,,,,,,
+0.13673746585845947,0.0008357623009942472,0.13673746585845947,30299.0,505,2025-10-20 19:41:36.742930,,,,,,,,,
+,,,,505,2025-10-20 19:43:12.378420,0.15134914219379425,0.00172811234369874,0.15134914219379425,0.14434531331062317,0.0017553711077198386,0.14434531331062317,,,
+,,,,505,2025-10-20 19:43:40.478733,,,,,,,0.14469653367996216,0.002111961366608739,0.14469653367996216
+0.14855845272541046,0.0026052838657051325,0.14855845272541046,30349.0,506,2025-10-20 19:49:30.903646,,,,,,,,,
+,,,,506,2025-10-20 19:51:45.779332,0.16161797940731049,0.004033121280372143,0.16161797940731049,0.15942247211933136,0.0025872786063700914,0.15942247211933136,,,
+,,,,506,2025-10-20 19:52:12.939319,,,,,,,0.14549751579761505,0.002159027848392725,0.14549751579761505
+0.14007914066314697,0.0013145814882591367,0.14007914066314697,30399.0,507,2025-10-20 19:57:03.325784,,,,,,,,,
+,,,,507,2025-10-20 20:00:03.868610,0.14624956250190735,0.002360417740419507,0.14624956250190735,0.14232507348060608,0.0017910266760736704,0.14232507348060608,,,
+,,,,507,2025-10-20 20:00:31.190804,,,,,,,0.14478270709514618,0.002218554960563779,0.14478270709514618
+0.1464378982782364,0.0010935688624158502,0.1464378982782364,30449.0,508,2025-10-20 20:04:49.537115,,,,,,,,,
+,,,,508,2025-10-20 20:08:45.224910,0.1505364179611206,0.0020168425980955362,0.1505364179611206,0.1453898847103119,0.001430539763532579,0.1453898847103119,,,
+,,,,508,2025-10-20 20:09:12.359857,,,,,,,0.14898216724395752,0.002268135314807296,0.14898216724395752
+0.16672974824905396,0.0017562535358592868,0.16672974824905396,30499.0,509,2025-10-20 20:12:11.646922,,,,,,,,,
+,,,,509,2025-10-20 20:17:09.277591,0.1455652117729187,0.0015777799999341369,0.1455652117729187,0.15688969194889069,0.0027028212789446115,0.15688969194889069,,,
+,,,,509,2025-10-20 20:17:35.026025,,,,,,,0.14917594194412231,0.0024264168459922075,0.14917594194412231
+0.11874384433031082,0.005050551611930132,0.11874384433031082,30549.0,510,2025-10-20 20:19:21.256753,,,,,,,,,
+0.14719654619693756,0.0037853941321372986,0.14719654619693756,30599.0,510,2025-10-20 20:24:18.121459,,,,,,,,,
+,,,,510,2025-10-20 20:25:51.958880,0.1560678631067276,0.0025302160065621138,0.1560678631067276,0.15244781970977783,0.0014573725638911128,0.15244781970977783,,,
+,,,,510,2025-10-20 20:26:19.742560,,,,,,,0.1481984555721283,0.00205888575874269,0.1481984555721283
+0.13334614038467407,0.0011010944144800305,0.13334614038467407,30649.0,511,2025-10-20 20:32:12.503088,,,,,,,,,
+,,,,511,2025-10-20 20:34:28.726556,0.15235431492328644,0.0019212717888876796,0.15235431492328644,0.1464461088180542,0.0025432375259697437,0.1464461088180542,,,
+,,,,511,2025-10-20 20:34:56.645120,,,,,,,0.143925279378891,0.002431749366223812,0.143925279378891
+0.14232739806175232,0.0010060856584459543,0.14232739806175232,30699.0,512,2025-10-20 20:39:53.578106,,,,,,,,,
+,,,,512,2025-10-20 20:43:06.572179,0.15425746142864227,0.002194669097661972,0.15425746142864227,0.16718633472919464,0.0025209300220012665,0.16718633472919464,,,
+,,,,512,2025-10-20 20:43:35.431596,,,,,,,0.14592039585113525,0.0020720374304801226,0.14592039585113525
+0.14350254833698273,0.0036537067499011755,0.14350254833698273,30749.0,513,2025-10-20 20:47:28.954604,,,,,,,,,
+,,,,513,2025-10-20 20:51:31.982438,0.15898823738098145,0.005355438217520714,0.15898823738098145,0.1404532492160797,0.0014402623055502772,0.1404532492160797,,,
+,,,,513,2025-10-20 20:51:58.706563,,,,,,,0.14642243087291718,0.0021623873617500067,0.14642243087291718
+0.14824660122394562,0.0011635764967650175,0.14824660122394562,30799.0,514,2025-10-20 20:55:08.461326,,,,,,,,,
+,,,,514,2025-10-20 20:59:56.980041,0.14606085419654846,0.0013308469206094742,0.14606085419654846,0.1496751606464386,0.001622202224098146,0.1496751606464386,,,
+,,,,514,2025-10-20 21:00:22.645989,,,,,,,0.14621040225028992,0.00230279378592968,0.14621040225028992
+0.1300256997346878,0.0019338029669597745,0.1300256997346878,30849.0,515,2025-10-20 21:02:14.130844,,,,,,,,,
+0.10074647516012192,0.0008980472339317203,0.10074647516012192,30899.0,515,2025-10-20 21:06:55.123597,,,,,,,,,
+,,,,515,2025-10-20 21:08:30.296038,0.1532817780971527,0.001857824856415391,0.1532817780971527,0.14709629118442535,0.002132745925337076,0.14709629118442535,,,
+,,,,515,2025-10-20 21:08:56.986604,,,,,,,0.14398744702339172,0.0023677810095250607,0.14398744702339172
+0.1551804542541504,0.0038527643773704767,0.1551804542541504,30949.0,516,2025-10-20 21:14:17.451190,,,,,,,,,
+,,,,516,2025-10-20 21:16:35.816803,0.14978492259979248,0.0016857767477631569,0.14978492259979248,0.15306445956230164,0.001864572986960411,0.15306445956230164,,,
+,,,,516,2025-10-20 21:17:02.665549,,,,,,,0.14518380165100098,0.002103825332596898,0.14518380165100098
+0.13931074738502502,0.001184475957415998,0.13931074738502502,30999.0,517,2025-10-20 21:21:53.267962,,,,,,,,,
+,,,,517,2025-10-20 21:25:13.050653,0.15250667929649353,0.002298317849636078,0.15250667929649353,0.1599671095609665,0.0021163704805076122,0.1599671095609665,,,
+,,,,517,2025-10-20 21:25:39.805458,,,,,,,0.14162246882915497,0.002222283510491252,0.14162246882915497
+0.1389271467924118,0.0017587445909157395,0.1389271467924118,31049.0,518,2025-10-20 21:29:40.897219,,,,,,,,,
+,,,,518,2025-10-20 21:33:52.605299,0.15525078773498535,0.0023144916631281376,0.15525078773498535,0.14790257811546326,0.0027207653038203716,0.14790257811546326,,,
+,,,,518,2025-10-20 21:34:19.162137,,,,,,,0.14478719234466553,0.0020927083678543568,0.14478719234466553
+0.14371803402900696,0.002805952215567231,0.14371803402900696,31099.0,519,2025-10-20 21:37:22.790376,,,,,,,,,
+,,,,519,2025-10-20 21:42:52.852699,0.1430845707654953,0.0017860528314486146,0.1430845707654953,0.14733272790908813,0.0017961745616048574,0.14733272790908813,,,
+,,,,519,2025-10-20 21:43:21.874776,,,,,,,0.14713864028453827,0.0021499909926205873,0.14713864028453827
+0.17043228447437286,0.003882037475705147,0.17043228447437286,31149.0,520,2025-10-20 21:45:22.497678,,,,,,,,,
+0.15846724808216095,0.0014551214408129454,0.15846724808216095,31199.0,520,2025-10-20 21:50:03.066235,,,,,,,,,
+,,,,520,2025-10-20 21:51:40.859949,0.1561354249715805,0.0019433317938819528,0.1561354249715805,0.16060693562030792,0.0029393548611551523,0.16060693562030792,,,
+,,,,520,2025-10-20 21:52:07.570474,,,,,,,0.14775344729423523,0.002276166807860136,0.14775344729423523
+0.13680775463581085,0.0020667111966758966,0.13680775463581085,31249.0,521,2025-10-20 21:57:58.637934,,,,,,,,,
+,,,,521,2025-10-20 22:00:11.090162,0.15076154470443726,0.0026255715638399124,0.15076154470443726,0.14636068046092987,0.002124309539794922,0.14636068046092987,,,
+,,,,521,2025-10-20 22:00:38.222616,,,,,,,0.14425671100616455,0.002106935018673539,0.14425671100616455
+0.17134888470172882,0.0010865251533687115,0.17134888470172882,31299.0,522,2025-10-20 22:05:44.036514,,,,,,,,,
+,,,,522,2025-10-20 22:08:43.086435,0.150152325630188,0.001588747021742165,0.150152325630188,0.15649090707302094,0.0019434943096712232,0.15649090707302094,,,
+,,,,522,2025-10-20 22:09:09.941802,,,,,,,0.14889942109584808,0.002377156401053071,0.14889942109584808
+0.1349823921918869,0.0037997369654476643,0.1349823921918869,31349.0,523,2025-10-20 22:12:51.006554,,,,,,,,,
+,,,,523,2025-10-20 22:16:59.288314,0.13673681020736694,0.0011877345386892557,0.13673681020736694,0.15359695255756378,0.002415702911093831,0.15359695255756378,,,
+,,,,523,2025-10-20 22:17:26.951478,,,,,,,0.14763125777244568,0.0023305867798626423,0.14763125777244568
+0.15468059480190277,0.0012868440244346857,0.15468059480190277,31399.0,524,2025-10-20 22:20:24.612046,,,,,,,,,
+,,,,524,2025-10-20 22:25:41.591982,0.14754138886928558,0.0013625314459204674,0.14754138886928558,0.14651912450790405,0.0023029642179608345,0.14651912450790405,,,
+,,,,524,2025-10-20 22:26:07.749698,,,,,,,0.1459561586380005,0.001974989427253604,0.1459561586380005
+0.14788328111171722,0.0013237576931715012,0.14788328111171722,31449.0,525,2025-10-20 22:28:00.647609,,,,,,,,,
+0.12520256638526917,0.0009650922147557139,0.12520256638526917,31499.0,525,2025-10-20 22:32:39.570840,,,,,,,,,
+,,,,525,2025-10-20 22:34:12.892757,0.15631604194641113,0.0014134168159216642,0.15631604194641113,0.16259542107582092,0.0015376679366454482,0.16259542107582092,,,
+,,,,525,2025-10-20 22:34:39.483517,,,,,,,0.1458980143070221,0.0018034483073279262,0.1458980143070221
+0.15035787224769592,0.0013255951926112175,0.15035787224769592,31549.0,526,2025-10-20 22:40:16.808678,,,,,,,,,
+,,,,526,2025-10-20 22:42:49.446370,0.15235763788223267,0.001999032450839877,0.15235763788223267,0.154310941696167,0.0014057981316000223,0.154310941696167,,,
+,,,,526,2025-10-20 22:43:16.510197,,,,,,,0.14376166462898254,0.0019342481391504407,0.14376166462898254
+0.14021624624729156,0.0011779889464378357,0.14021624624729156,31599.0,527,2025-10-20 22:48:22.658247,,,,,,,,,
+,,,,527,2025-10-20 22:51:41.232275,0.1458507478237152,0.0023674166295677423,0.1458507478237152,0.152686208486557,0.00432070204988122,0.152686208486557,,,
+,,,,527,2025-10-20 22:52:07.191701,,,,,,,0.14540545642375946,0.0022625927813351154,0.14540545642375946
+0.15866923332214355,0.004360709805041552,0.15866923332214355,31649.0,528,2025-10-20 22:56:07.103248,,,,,,,,,
+,,,,528,2025-10-20 23:00:28.071465,0.1490662842988968,0.0028016071300953627,0.1490662842988968,0.14856639504432678,0.003122681053355336,0.14856639504432678,,,
+,,,,528,2025-10-20 23:00:55.748001,,,,,,,0.14348304271697998,0.0019213297637179494,0.14348304271697998
+0.1412341147661209,0.0011930830078199506,0.1412341147661209,31699.0,529,2025-10-20 23:03:50.990978,,,,,,,,,
+,,,,529,2025-10-20 23:08:50.877558,0.14842985570430756,0.0016925025265663862,0.14842985570430756,0.13965624570846558,0.0023809897247701883,0.13965624570846558,,,
+,,,,529,2025-10-20 23:09:18.192139,,,,,,,0.1431247740983963,0.0021627957466989756,0.1431247740983963
+0.1386248618364334,0.0010374353732913733,0.1386248618364334,31749.0,530,2025-10-20 23:11:11.231405,,,,,,,,,
+0.16531790792942047,0.004840783774852753,0.16531790792942047,31799.0,530,2025-10-20 23:15:48.958706,,,,,,,,,
+,,,,530,2025-10-20 23:17:26.947165,0.14998571574687958,0.0037933310959488153,0.14998571574687958,0.142877995967865,0.0015346778091043234,0.142877995967865,,,
+,,,,530,2025-10-20 23:17:53.788964,,,,,,,0.1477086991071701,0.0025033820420503616,0.1477086991071701
+0.15649032592773438,0.0018877345137298107,0.15649032592773438,31849.0,531,2025-10-20 23:23:41.140412,,,,,,,,,
+,,,,531,2025-10-20 23:26:06.869469,0.14383335411548615,0.0019501523347571492,0.14383335411548615,0.1516251564025879,0.00276133231818676,0.1516251564025879,,,
+,,,,531,2025-10-20 23:26:33.857390,,,,,,,0.14219744503498077,0.0021655852906405926,0.14219744503498077
+0.1471015214920044,0.0015202969079837203,0.1471015214920044,31899.0,532,2025-10-20 23:31:24.133983,,,,,,,,,
+,,,,532,2025-10-20 23:34:34.808926,0.15079395473003387,0.002132700989022851,0.15079395473003387,0.14700883626937866,0.0013913275906816125,0.14700883626937866,,,
+,,,,532,2025-10-20 23:35:02.424261,,,,,,,0.14515851438045502,0.0023123756982386112,0.14515851438045502
+0.13581353425979614,0.0018396119121462107,0.13581353425979614,31949.0,533,2025-10-20 23:39:00.728129,,,,,,,,,
+,,,,533,2025-10-20 23:43:35.799508,0.14378610253334045,0.0034256409853696823,0.14378610253334045,0.14149779081344604,0.0020679442677646875,0.14149779081344604,,,
+,,,,533,2025-10-20 23:44:03.493800,,,,,,,0.14418438076972961,0.0020329568069428205,0.14418438076972961
+0.12222898751497269,0.001214715768583119,0.12222898751497269,31999.0,534,2025-10-20 23:46:48.514963,,,,,,,,,
+,,,,534,2025-10-20 23:51:52.082889,0.1502578854560852,0.0028773301746696234,0.1502578854560852,0.1489129662513733,0.0025249002501368523,0.1489129662513733,,,
+,,,,534,2025-10-20 23:52:19.582775,,,,,,,0.1422969102859497,0.0025135676842182875,0.1422969102859497
+0.12862151861190796,0.0006915414705872536,0.12862151861190796,32049.0,535,2025-10-20 23:54:05.366061,,,,,,,,,
+0.1332116425037384,0.002224563853815198,0.1332116425037384,32099.0,535,2025-10-20 23:59:01.407093,,,,,,,,,
+,,,,535,2025-10-21 00:00:37.012297,0.15434592962265015,0.002824361901730299,0.15434592962265015,0.1584077626466751,0.00259983167052269,0.1584077626466751,,,
+,,,,535,2025-10-21 00:01:05.019804,,,,,,,0.14609675109386444,0.002250776859000325,0.14609675109386444
+0.1388816237449646,0.0008279897156171501,0.1388816237449646,32149.0,536,2025-10-21 00:06:58.797737,,,,,,,,,
+,,,,536,2025-10-21 00:09:15.404034,0.14868728816509247,0.002648701658472419,0.14868728816509247,0.1524714082479477,0.0020698250737041235,0.1524714082479477,,,
+,,,,536,2025-10-21 00:09:43.022690,,,,,,,0.14702825248241425,0.0021454908419400454,0.14702825248241425
+0.14170850813388824,0.003747533308342099,0.14170850813388824,32199.0,537,2025-10-21 00:14:29.300451,,,,,,,,,
+,,,,537,2025-10-21 00:17:52.008352,0.1412491798400879,0.0024264208041131496,0.1412491798400879,0.1539936512708664,0.0015733266482129693,0.1539936512708664,,,
+,,,,537,2025-10-21 00:18:19.769029,,,,,,,0.14556966722011566,0.002447692211717367,0.14556966722011566
+0.1573783904314041,0.0009995050495490432,0.1573783904314041,32249.0,538,2025-10-21 00:22:02.196340,,,,,,,,,
+,,,,538,2025-10-21 00:26:14.471962,0.15044645965099335,0.0023623474407941103,0.15044645965099335,0.1425510197877884,0.0019850963726639748,0.1425510197877884,,,
+,,,,538,2025-10-21 00:27:14.005863,,,,,,,0.14244337379932404,0.002030571224167943,0.14244337379932404
+0.14785470068454742,0.002003089990466833,0.14785470068454742,32299.0,539,2025-10-21 00:30:00.201599,,,,,,,,,
+,,,,539,2025-10-21 00:35:08.437246,0.1466018706560135,0.001470897812396288,0.1466018706560135,0.15504670143127441,0.001660178997553885,0.15504670143127441,,,
+,,,,539,2025-10-21 00:35:35.373594,,,,,,,0.1505323350429535,0.002211557701230049,0.1505323350429535
+0.14569105207920074,0.0018398351967334747,0.14569105207920074,32349.0,540,2025-10-21 00:37:31.782244,,,,,,,,,
+0.13467587530612946,0.0008802225347608328,0.13467587530612946,32399.0,540,2025-10-21 00:42:26.823240,,,,,,,,,
+,,,,540,2025-10-21 00:44:04.937685,0.14703741669654846,0.0015824120491743088,0.14703741669654846,0.1572123020887375,0.0038727077189832926,0.1572123020887375,,,
+,,,,540,2025-10-21 00:44:33.135139,,,,,,,0.14607231318950653,0.0020798223558813334,0.14607231318950653
+0.11695640534162521,0.0007083768723532557,0.11695640534162521,32449.0,541,2025-10-21 00:50:13.942596,,,,,,,,,
+,,,,541,2025-10-21 00:52:28.926388,0.1491752713918686,0.002118248725309968,0.1491752713918686,0.14689122140407562,0.0029486261773854494,0.14689122140407562,,,
+,,,,541,2025-10-21 00:52:57.003680,,,,,,,0.14628951251506805,0.0023682652972638607,0.14628951251506805
+0.16096152365207672,0.0012214051093906164,0.16096152365207672,32499.0,542,2025-10-21 00:57:45.188032,,,,,,,,,
+,,,,542,2025-10-21 01:01:07.171260,0.16210642457008362,0.002090828027576208,0.16210642457008362,0.1472966969013214,0.0019059109035879374,0.1472966969013214,,,
+,,,,542,2025-10-21 01:01:34.867187,,,,,,,0.14464060962200165,0.0016664671711623669,0.14464060962200165
+0.14746138453483582,0.0010082770604640245,0.14746138453483582,32549.0,543,2025-10-21 01:05:48.122722,,,,,,,,,
+,,,,543,2025-10-21 01:09:53.465384,0.15535402297973633,0.003800109727308154,0.15535402297973633,0.15871351957321167,0.0034075663425028324,0.15871351957321167,,,
+,,,,543,2025-10-21 01:10:19.300119,,,,,,,0.14285331964492798,0.0020137596875429153,0.14285331964492798
+0.11201443523168564,0.0009765517897903919,0.11201443523168564,32599.0,544,2025-10-21 01:13:17.270478,,,,,,,,,
+,,,,544,2025-10-21 01:18:30.380633,0.15313832461833954,0.0032681599259376526,0.15313832461833954,0.15233811736106873,0.002162321237847209,0.15233811736106873,,,
+,,,,544,2025-10-21 01:18:56.543068,,,,,,,0.1454945206642151,0.0021118854638189077,0.1454945206642151
+0.1395764946937561,0.0011928639141842723,0.1395764946937561,32649.0,545,2025-10-21 01:20:49.539263,,,,,,,,,
+0.13993225991725922,0.0018881007563322783,0.13993225991725922,32699.0,545,2025-10-21 01:25:50.150342,,,,,,,,,
+,,,,545,2025-10-21 01:27:29.758112,0.14200296998023987,0.0014076418010517955,0.14200296998023987,0.14521366357803345,0.0022862469777464867,0.14521366357803345,,,
+,,,,545,2025-10-21 01:27:57.189099,,,,,,,0.14354531466960907,0.0020695545244961977,0.14354531466960907
+0.146465465426445,0.0012884873431175947,0.146465465426445,32749.0,546,2025-10-21 01:33:36.096047,,,,,,,,,
+,,,,546,2025-10-21 01:35:51.037905,0.14577628672122955,0.002427199389785528,0.14577628672122955,0.15345226228237152,0.0021845835726708174,0.15345226228237152,,,
+,,,,546,2025-10-21 01:36:18.144538,,,,,,,0.14305442571640015,0.0020320394542068243,0.14305442571640015
+0.14879895746707916,0.0036930048372596502,0.14879895746707916,32799.0,547,2025-10-21 01:41:20.569986,,,,,,,,,
+,,,,547,2025-10-21 01:44:20.884728,0.14608454704284668,0.0015733911423012614,0.14608454704284668,0.1504545360803604,0.0015794747741892934,0.1504545360803604,,,
+,,,,547,2025-10-21 01:44:47.889981,,,,,,,0.14923463761806488,0.0021670476999133825,0.14923463761806488
+0.15372700989246368,0.0015235681785270572,0.15372700989246368,32849.0,548,2025-10-21 01:48:37.600106,,,,,,,,,
+,,,,548,2025-10-21 01:53:05.620676,0.1509454846382141,0.001995789585635066,0.1509454846382141,0.15109433233737946,0.002963515231385827,0.15109433233737946,,,
+,,,,548,2025-10-21 01:53:32.781994,,,,,,,0.14409568905830383,0.0022701977286487818,0.14409568905830383
+0.16359993815422058,0.0012875334359705448,0.16359993815422058,32899.0,549,2025-10-21 01:56:15.673838,,,,,,,,,
+,,,,549,2025-10-21 02:01:52.580786,0.1472405642271042,0.0020252284593880177,0.1472405642271042,0.13913613557815552,0.0012463144958019257,0.13913613557815552,,,
+,,,,549,2025-10-21 02:02:46.105169,,,,,,,0.1439501792192459,0.0019485261291265488,0.1439501792192459
+0.12098418921232224,0.0010882837232202291,0.12098418921232224,32949.0,550,2025-10-21 02:04:44.198875,,,,,,,,,
+0.1467040628194809,0.001355502987280488,0.1467040628194809,32999.0,550,2025-10-21 02:09:17.207247,,,,,,,,,
+,,,,550,2025-10-21 02:10:50.991388,0.14859026670455933,0.0015694621251896024,0.14859026670455933,0.15339067578315735,0.0018149861134588718,0.15339067578315735,,,
+,,,,550,2025-10-21 02:11:18.895554,,,,,,,0.1423216611146927,0.0023680860176682472,0.1423216611146927
+0.1211414635181427,0.000687575782649219,0.1211414635181427,33049.0,551,2025-10-21 02:16:58.407224,,,,,,,,,
+,,,,551,2025-10-21 02:19:14.576973,0.1400906890630722,0.0019915804732590914,0.1400906890630722,0.14879532158374786,0.002366267144680023,0.14879532158374786,,,
+,,,,551,2025-10-21 02:19:41.230770,,,,,,,0.1426776945590973,0.002111074747517705,0.1426776945590973
+0.13541482388973236,0.0012142590712755919,0.13541482388973236,33099.0,552,2025-10-21 02:24:34.598882,,,,,,,,,
+,,,,552,2025-10-21 02:27:43.490053,0.13516049087047577,0.0020534254144877195,0.13516049087047577,0.15451212227344513,0.0024913407396525145,0.15451212227344513,,,
+,,,,552,2025-10-21 02:28:09.986544,,,,,,,0.14394591748714447,0.002032406395301223,0.14394591748714447
+0.13231852650642395,0.001132858102209866,0.13231852650642395,33149.0,553,2025-10-21 02:31:59.918811,,,,,,,,,
+,,,,553,2025-10-21 02:36:17.721204,0.13805268704891205,0.0016325218603014946,0.13805268704891205,0.14648060500621796,0.003245658241212368,0.14648060500621796,,,
+,,,,553,2025-10-21 02:36:45.544827,,,,,,,0.14536553621292114,0.0023755314759910107,0.14536553621292114
+0.1435471773147583,0.0016643141862004995,0.1435471773147583,33199.0,554,2025-10-21 02:39:37.900892,,,,,,,,,
+,,,,554,2025-10-21 02:44:56.264428,0.13468116521835327,0.0011653590481728315,0.13468116521835327,0.14879648387432098,0.0028236662037670612,0.14879648387432098,,,
+,,,,554,2025-10-21 02:45:22.356144,,,,,,,0.14739680290222168,0.002346023917198181,0.14739680290222168
+0.1696418672800064,0.0023067141883075237,0.1696418672800064,33249.0,555,2025-10-21 02:47:17.251211,,,,,,,,,
+0.11825186014175415,0.0032107913866639137,0.11825186014175415,33299.0,555,2025-10-21 02:51:59.483697,,,,,,,,,
+,,,,555,2025-10-21 02:53:40.828990,0.15066492557525635,0.0022766434121876955,0.15066492557525635,0.14625521004199982,0.0016134477918967605,0.14625521004199982,,,
+,,,,555,2025-10-21 02:54:06.747072,,,,,,,0.14314384758472443,0.00220878585241735,0.14314384758472443
+0.16572952270507812,0.0012263242388144135,0.16572952270507812,33349.0,556,2025-10-21 03:00:06.244007,,,,,,,,,
+,,,,556,2025-10-21 03:02:19.593890,0.1491292268037796,0.002487224293872714,0.1491292268037796,0.14871151745319366,0.0023698685690760612,0.14871151745319366,,,
+,,,,556,2025-10-21 03:02:46.288572,,,,,,,0.14274847507476807,0.0019271161872893572,0.14274847507476807
+0.15942345559597015,0.0038395693991333246,0.15942345559597015,33399.0,557,2025-10-21 03:07:44.693063,,,,,,,,,
+,,,,557,2025-10-21 03:11:03.137726,0.14939236640930176,0.0024352313484996557,0.14939236640930176,0.15021054446697235,0.0021065985783934593,0.15021054446697235,,,
+,,,,557,2025-10-21 03:11:29.511490,,,,,,,0.1431119740009308,0.0022418417502194643,0.1431119740009308
+0.154305100440979,0.0018717455677688122,0.154305100440979,33449.0,558,2025-10-21 03:15:30.957805,,,,,,,,,
+,,,,558,2025-10-21 03:19:48.474855,0.1491401046514511,0.0017252267571166158,0.1491401046514511,0.14669863879680634,0.0017532269703224301,0.14669863879680634,,,
+,,,,558,2025-10-21 03:20:15.372701,,,,,,,0.1425892859697342,0.002220229245722294,0.1425892859697342
+0.13053712248802185,0.0016476422315463424,0.13053712248802185,33499.0,559,2025-10-21 03:23:17.587660,,,,,,,,,
+,,,,559,2025-10-21 03:28:54.468517,0.13602674007415771,0.001823302824050188,0.13602674007415771,0.14398211240768433,0.0015758101362735033,0.14398211240768433,,,
+,,,,559,2025-10-21 03:29:21.858523,,,,,,,0.1456676721572876,0.0022845789790153503,0.1456676721572876
+0.12553611397743225,0.0010214309440925717,0.12553611397743225,33549.0,560,2025-10-21 03:31:15.644532,,,,,,,,,
+0.13003523647785187,0.0010652159107849002,0.13003523647785187,33599.0,560,2025-10-21 03:35:56.813604,,,,,,,,,
+,,,,560,2025-10-21 03:37:35.151521,0.150604709982872,0.00138081144541502,0.150604709982872,0.15220826864242554,0.0024021551944315434,0.15220826864242554,,,
+,,,,560,2025-10-21 03:38:01.960087,,,,,,,0.1435130089521408,0.0020220684818923473,0.1435130089521408
+0.17339423298835754,0.004524195566773415,0.17339423298835754,33649.0,561,2025-10-21 03:44:17.137554,,,,,,,,,
+,,,,561,2025-10-21 03:46:30.890013,0.15030603110790253,0.0026307732332497835,0.15030603110790253,0.1544232964515686,0.002636139979586005,0.1544232964515686,,,
+,,,,561,2025-10-21 03:46:57.345595,,,,,,,0.1443762630224228,0.0023131845518946648,0.1443762630224228
+0.15656544268131256,0.0010996733326464891,0.15656544268131256,33699.0,562,2025-10-21 03:52:06.561949,,,,,,,,,
+,,,,562,2025-10-21 03:55:15.668801,0.1551215648651123,0.002261900808662176,0.1551215648651123,0.15101641416549683,0.002216504653915763,0.15101641416549683,,,
+,,,,562,2025-10-21 03:55:42.404899,,,,,,,0.14545874297618866,0.002322062384337187,0.14545874297618866
+0.11616653949022293,0.0005696866428479552,0.11616653949022293,33749.0,563,2025-10-21 03:59:25.658719,,,,,,,,,
+,,,,563,2025-10-21 04:03:43.383262,0.14378267526626587,0.0025681296829134226,0.14378267526626587,0.15473298728466034,0.0021155737340450287,0.15473298728466034,,,
+,,,,563,2025-10-21 04:04:09.659609,,,,,,,0.1452663242816925,0.002367345616221428,0.1452663242816925
+0.097945436835289,0.001003570156171918,0.097945436835289,33799.0,564,2025-10-21 04:07:01.040510,,,,,,,,,
+,,,,564,2025-10-21 04:12:29.475559,0.1520034521818161,0.002919246442615986,0.1520034521818161,0.14090555906295776,0.0014689353993162513,0.14090555906295776,,,
+,,,,564,2025-10-21 04:12:55.922607,,,,,,,0.14209279417991638,0.002097014570608735,0.14209279417991638
+0.12214447557926178,0.0008351455326192081,0.12214447557926178,33849.0,565,2025-10-21 04:14:43.877026,,,,,,,,,
+0.1334390640258789,0.0013557523488998413,0.1334390640258789,33899.0,565,2025-10-21 04:19:36.117324,,,,,,,,,
+,,,,565,2025-10-21 04:21:14.095832,0.14685969054698944,0.0016603475669398904,0.14685969054698944,0.14381739497184753,0.0011372562730684876,0.14381739497184753,,,
+,,,,565,2025-10-21 04:21:40.663492,,,,,,,0.14379696547985077,0.00224419217556715,0.14379696547985077
+0.15169638395309448,0.0016271891072392464,0.15169638395309448,33949.0,566,2025-10-21 04:27:27.938727,,,,,,,,,
+,,,,566,2025-10-21 04:29:42.056331,0.15227973461151123,0.0024449527263641357,0.15227973461151123,0.14930865168571472,0.002459611278027296,0.14930865168571472,,,
+,,,,566,2025-10-21 04:30:09.427808,,,,,,,0.14490316808223724,0.0022942875511944294,0.14490316808223724
+0.15238803625106812,0.0018861631397157907,0.15238803625106812,33999.0,567,2025-10-21 04:34:44.828334,,,,,,,,,
+,,,,567,2025-10-21 04:38:03.694008,0.1427280455827713,0.0013848707312718034,0.1427280455827713,0.15238197147846222,0.0032478913199156523,0.15238197147846222,,,
+,,,,567,2025-10-21 04:38:30.577663,,,,,,,0.14573928713798523,0.0019985269755125046,0.14573928713798523
+0.14507879316806793,0.0026382203213870525,0.14507879316806793,34049.0,568,2025-10-21 04:42:47.551279,,,,,,,,,
+,,,,568,2025-10-21 04:47:00.083433,0.1611107885837555,0.0019612121395766735,0.1611107885837555,0.15045411884784698,0.001900581526570022,0.15045411884784698,,,
+,,,,568,2025-10-21 04:47:25.925889,,,,,,,0.13982592523097992,0.002005532383918762,0.13982592523097992
+0.1469033658504486,0.0008393689640797675,0.1469033658504486,34099.0,569,2025-10-21 04:50:40.204474,,,,,,,,,
+,,,,569,2025-10-21 04:55:55.357353,0.14205287396907806,0.0015744763659313321,0.14205287396907806,0.14751745760440826,0.00164607516489923,0.14751745760440826,,,
+,,,,569,2025-10-21 04:56:22.533632,,,,,,,0.14109215140342712,0.0018779297824949026,0.14109215140342712
+0.10984717309474945,0.0010535094188526273,0.10984717309474945,34149.0,570,2025-10-21 04:58:14.645132,,,,,,,,,
+0.12729689478874207,0.0016713227378204465,0.12729689478874207,34199.0,570,2025-10-21 05:03:13.791898,,,,,,,,,
+,,,,570,2025-10-21 05:04:46.895962,0.1554972380399704,0.003742404282093048,0.1554972380399704,0.14834193885326385,0.0016193314222618937,0.14834193885326385,,,
+,,,,570,2025-10-21 05:05:14.293741,,,,,,,0.14149504899978638,0.00216643325984478,0.14149504899978638
+0.12861624360084534,0.006777526810765266,0.12861624360084534,34249.0,571,2025-10-21 05:11:09.255142,,,,,,,,,
+,,,,571,2025-10-21 05:13:29.597571,0.15375348925590515,0.002157766604796052,0.15375348925590515,0.15989887714385986,0.002348872134461999,0.15989887714385986,,,
+,,,,571,2025-10-21 05:13:56.341148,,,,,,,0.14651504158973694,0.0025328330229967833,0.14651504158973694
+0.146115243434906,0.002940127160400152,0.146115243434906,34299.0,572,2025-10-21 05:18:57.698576,,,,,,,,,
+,,,,572,2025-10-21 05:22:12.814845,0.1509539633989334,0.002382684964686632,0.1509539633989334,0.14793503284454346,0.0016880383482202888,0.14793503284454346,,,
+,,,,572,2025-10-21 05:22:39.346789,,,,,,,0.142854243516922,0.0021585088688880205,0.142854243516922
+0.14882978796958923,0.0008974829106591642,0.14882978796958923,34349.0,573,2025-10-21 05:26:50.592698,,,,,,,,,
+,,,,573,2025-10-21 05:31:03.789323,0.14533250033855438,0.003229742171242833,0.14533250033855438,0.15613104403018951,0.0024611479602754116,0.15613104403018951,,,
+,,,,573,2025-10-21 05:31:30.411023,,,,,,,0.14682437479496002,0.0023031546734273434,0.14682437479496002
+0.12452403455972672,0.0009698839276097715,0.12452403455972672,34399.0,574,2025-10-21 05:34:31.535322,,,,,,,,,
+,,,,574,2025-10-21 05:39:40.996356,0.14508633315563202,0.0017137577524408698,0.14508633315563202,0.14884595572948456,0.002014879370108247,0.14884595572948456,,,
+,,,,574,2025-10-21 05:40:07.647363,,,,,,,0.14161962270736694,0.0020486372523009777,0.14161962270736694
+0.16368354856967926,0.0018138932064175606,0.16368354856967926,34449.0,575,2025-10-21 05:42:00.412690,,,,,,,,,
+0.14349545538425446,0.0018704012036323547,0.14349545538425446,34499.0,575,2025-10-21 05:46:14.755963,,,,,,,,,
+,,,,575,2025-10-21 05:47:52.871339,0.15090711414813995,0.0022974745370447636,0.15090711414813995,0.1406046450138092,0.0027388385497033596,0.1406046450138092,,,
+,,,,575,2025-10-21 05:48:19.495944,,,,,,,0.14492638409137726,0.002381614176556468,0.14492638409137726
+0.15611810982227325,0.002823119517415762,0.15611810982227325,34549.0,576,2025-10-21 05:54:05.372381,,,,,,,,,
+,,,,576,2025-10-21 05:56:23.808439,0.15277180075645447,0.001949594123288989,0.15277180075645447,0.15022538602352142,0.0013607669388875365,0.15022538602352142,,,
+,,,,576,2025-10-21 05:56:50.987753,,,,,,,0.14423638582229614,0.0020561700221151114,0.14423638582229614
+0.128236323595047,0.00104598852340132,0.128236323595047,34599.0,577,2025-10-21 06:01:34.784507,,,,,,,,,
+,,,,577,2025-10-21 06:04:55.487105,0.14083410799503326,0.0019035832956433296,0.14083410799503326,0.14957895874977112,0.0024499865248799324,0.14957895874977112,,,
+,,,,577,2025-10-21 06:05:23.907881,,,,,,,0.1452762484550476,0.0022108671255409718,0.1452762484550476
+0.17927055060863495,0.003325550351291895,0.17927055060863495,34649.0,578,2025-10-21 06:09:21.172676,,,,,,,,,
+,,,,578,2025-10-21 06:13:28.777462,0.14580711722373962,0.002622598083689809,0.14580711722373962,0.1499491184949875,0.002610783791169524,0.1499491184949875,,,
+,,,,578,2025-10-21 06:13:57.531755,,,,,,,0.14338204264640808,0.002185360062867403,0.14338204264640808
+0.17700758576393127,0.0026645506732165813,0.17700758576393127,34699.0,579,2025-10-21 06:17:06.501823,,,,,,,,,
+,,,,579,2025-10-21 06:22:18.913610,0.13999556005001068,0.001994082937017083,0.13999556005001068,0.14793187379837036,0.002228539204224944,0.14793187379837036,,,
+,,,,579,2025-10-21 06:22:46.269368,,,,,,,0.14669854938983917,0.002341931452974677,0.14669854938983917
+0.13261359930038452,0.0021853591315448284,0.13261359930038452,34749.0,580,2025-10-21 06:24:42.184602,,,,,,,,,
+0.12119094282388687,0.001237710821442306,0.12119094282388687,34799.0,580,2025-10-21 06:29:14.360468,,,,,,,,,
+,,,,580,2025-10-21 06:30:49.743363,0.15392708778381348,0.0016781564336270094,0.15392708778381348,0.15182779729366302,0.002554068574681878,0.15182779729366302,,,
+,,,,580,2025-10-21 06:31:16.548745,,,,,,,0.14618918299674988,0.002400909550487995,0.14618918299674988
+0.12836875021457672,0.000988885760307312,0.12836875021457672,34849.0,581,2025-10-21 06:36:51.193977,,,,,,,,,
+,,,,581,2025-10-21 06:39:09.493021,0.1468552052974701,0.0031473967246711254,0.1468552052974701,0.14313235878944397,0.0021617142483592033,0.14313235878944397,,,
+,,,,581,2025-10-21 06:39:36.993044,,,,,,,0.14393086731433868,0.0021975748240947723,0.14393086731433868
+0.1061432957649231,0.0005828335997648537,0.1061432957649231,34899.0,582,2025-10-21 06:44:24.980001,,,,,,,,,
+,,,,582,2025-10-21 06:47:40.902241,0.1523149609565735,0.002240588190034032,0.1523149609565735,0.13733221590518951,0.0014103502035140991,0.13733221590518951,,,
+,,,,582,2025-10-21 06:48:34.871265,,,,,,,0.14604130387306213,0.002195153385400772,0.14604130387306213
+0.14671078324317932,0.00144369772169739,0.14671078324317932,34949.0,583,2025-10-21 06:52:37.963972,,,,,,,,,
+,,,,583,2025-10-21 06:56:58.229167,0.1497691422700882,0.002422521123662591,0.1497691422700882,0.16202881932258606,0.0020132686477154493,0.16202881932258606,,,
+,,,,583,2025-10-21 06:57:26.043391,,,,,,,0.14365200698375702,0.0021327894646674395,0.14365200698375702
+0.13951376080513,0.001469873357564211,0.13951376080513,34999.0,584,2025-10-21 07:00:08.641698,,,,,,,,,
+,,,,584,2025-10-21 07:05:18.088451,0.14890293776988983,0.0017382655059918761,0.14890293776988983,0.15444210171699524,0.001543736201710999,0.15444210171699524,,,
+,,,,584,2025-10-21 07:05:44.941318,,,,,,,0.14356791973114014,0.0025621361564844847,0.14356791973114014
+0.1566956788301468,0.00316259334795177,0.1566956788301468,35049.0,585,2025-10-21 07:07:36.721549,,,,,,,,,
+0.15097306668758392,0.003585000755265355,0.15097306668758392,35099.0,585,2025-10-21 07:12:37.023389,,,,,,,,,
+,,,,585,2025-10-21 07:14:11.598704,0.13782989978790283,0.00198412430472672,0.13782989978790283,0.14541231095790863,0.002341504907235503,0.14541231095790863,,,
+,,,,585,2025-10-21 07:14:37.889018,,,,,,,0.14422516524791718,0.0022400643210858107,0.14422516524791718
+0.14362134039402008,0.0010772158857434988,0.14362134039402008,35149.0,586,2025-10-21 07:20:28.558892,,,,,,,,,
+,,,,586,2025-10-21 07:22:41.855257,0.14376503229141235,0.0015697880880907178,0.14376503229141235,0.1385878324508667,0.0022579128853976727,0.1385878324508667,,,
+,,,,586,2025-10-21 07:23:08.636183,,,,,,,0.14656896889209747,0.0019980145152658224,0.14656896889209747
+0.1189182922244072,0.003483259817585349,0.1189182922244072,35199.0,587,2025-10-21 07:28:02.673410,,,,,,,,,
+,,,,587,2025-10-21 07:31:22.091910,0.15442505478858948,0.002112399786710739,0.15442505478858948,0.1501617580652237,0.0024011635687202215,0.1501617580652237,,,
+,,,,587,2025-10-21 07:31:48.370473,,,,,,,0.14501138031482697,0.001999757019802928,0.14501138031482697
+0.1607552468776703,0.001717836013995111,0.1607552468776703,35249.0,588,2025-10-21 07:35:38.015517,,,,,,,,,
+,,,,588,2025-10-21 07:39:51.525664,0.14389128983020782,0.0018037413246929646,0.14389128983020782,0.15205125510692596,0.001786110340617597,0.15205125510692596,,,
+,,,,588,2025-10-21 07:40:18.490564,,,,,,,0.1443909853696823,0.002170081017538905,0.1443909853696823
+0.14392253756523132,0.0014228253858163953,0.14392253756523132,35299.0,589,2025-10-21 07:42:58.239222,,,,,,,,,
+,,,,589,2025-10-21 07:48:07.622098,0.14814713597297668,0.003958607092499733,0.14814713597297668,0.15332138538360596,0.0020873588509857655,0.15332138538360596,,,
+,,,,589,2025-10-21 07:48:35.203710,,,,,,,0.14593449234962463,0.0022801344748586416,0.14593449234962463
+0.1557438224554062,0.0011429177829995751,0.1557438224554062,35349.0,590,2025-10-21 07:50:25.152656,,,,,,,,,
+0.13540595769882202,0.0007410895195789635,0.13540595769882202,35399.0,590,2025-10-21 07:55:12.008972,,,,,,,,,
+,,,,590,2025-10-21 07:56:45.232343,0.15382006764411926,0.002077271696180105,0.15382006764411926,0.1475786566734314,0.0017825764371082187,0.1475786566734314,,,
+,,,,590,2025-10-21 07:57:12.782560,,,,,,,0.14355723559856415,0.0020691710524260998,0.14355723559856415
+0.13877062499523163,0.0009637245093472302,0.13877062499523163,35449.0,591,2025-10-21 08:03:08.472513,,,,,,,,,
+,,,,591,2025-10-21 08:05:20.664530,0.1590898483991623,0.0025819747243076563,0.1590898483991623,0.1374303698539734,0.0013863022904843092,0.1374303698539734,,,
+,,,,591,2025-10-21 08:06:11.376462,,,,,,,0.1447489857673645,0.0022728610783815384,0.1447489857673645
+0.12122300267219543,0.0024659321643412113,0.12122300267219543,35499.0,592,2025-10-21 08:11:52.330823,,,,,,,,,
+,,,,592,2025-10-21 08:14:48.514329,0.14410170912742615,0.002943814964964986,0.14410170912742615,0.1475745439529419,0.0013678345130756497,0.1475745439529419,,,
+,,,,592,2025-10-21 08:15:16.960190,,,,,,,0.14614462852478027,0.0023239185102283955,0.14614462852478027
+0.13121652603149414,0.004684793297201395,0.13121652603149414,35549.0,593,2025-10-21 08:19:13.599690,,,,,,,,,
+,,,,593,2025-10-21 08:23:31.236772,0.15644949674606323,0.002565441420301795,0.15644949674606323,0.15824396908283234,0.0032377594616264105,0.15824396908283234,,,
+,,,,593,2025-10-21 08:23:57.227554,,,,,,,0.1443438082933426,0.002573074772953987,0.1443438082933426
+0.18022038042545319,0.003067965619266033,0.18022038042545319,35599.0,594,2025-10-21 08:26:55.600582,,,,,,,,,
+,,,,594,2025-10-21 08:32:07.440412,0.14832627773284912,0.0016439530299976468,0.14832627773284912,0.1511317938566208,0.004034585319459438,0.1511317938566208,,,
+,,,,594,2025-10-21 08:32:33.044860,,,,,,,0.14730949699878693,0.0020334129221737385,0.14730949699878693
+0.14053364098072052,0.0015563609777018428,0.14053364098072052,35649.0,595,2025-10-21 08:34:23.796543,,,,,,,,,
+0.16088047623634338,0.00264622550457716,0.16088047623634338,35699.0,595,2025-10-21 08:39:38.275134,,,,,,,,,
+,,,,595,2025-10-21 08:41:14.761326,0.15422075986862183,0.0017097006784752011,0.15422075986862183,0.15007489919662476,0.002805081894621253,0.15007489919662476,,,
+,,,,595,2025-10-21 08:41:42.263352,,,,,,,0.14645184576511383,0.002106738043949008,0.14645184576511383
+0.11907768249511719,0.0010978388600051403,0.11907768249511719,35749.0,596,2025-10-21 08:47:35.862460,,,,,,,,,
+,,,,596,2025-10-21 08:49:50.015837,0.15627770125865936,0.0015333032933995128,0.15627770125865936,0.14589346945285797,0.0020481098908931017,0.14589346945285797,,,
+,,,,596,2025-10-21 08:50:17.319389,,,,,,,0.14562825858592987,0.0021769143640995026,0.14562825858592987
+0.12791098654270172,0.0017230637604370713,0.12791098654270172,35799.0,597,2025-10-21 08:55:34.801252,,,,,,,,,
+,,,,597,2025-10-21 08:58:44.092253,0.1504521667957306,0.0024741387460380793,0.1504521667957306,0.1431746482849121,0.0020690099336206913,0.1431746482849121,,,
+,,,,597,2025-10-21 08:59:11.040479,,,,,,,0.14322181046009064,0.0019202595576643944,0.14322181046009064
+0.1667889505624771,0.0023946284782141447,0.1667889505624771,35849.0,598,2025-10-21 09:03:14.227778,,,,,,,,,
+,,,,598,2025-10-21 09:07:07.233122,0.13874448835849762,0.002378289820626378,0.13874448835849762,0.149385467171669,0.00233703525736928,0.149385467171669,,,
+,,,,598,2025-10-21 09:07:34.944954,,,,,,,0.1451795995235443,0.0019858607556670904,0.1451795995235443
+0.13912832736968994,0.0010873922146856785,0.13912832736968994,35899.0,599,2025-10-21 09:10:17.059594,,,,,,,,,
+,,,,599,2025-10-21 09:15:41.205762,0.14719316363334656,0.003108714474365115,0.14719316363334656,0.145362988114357,0.0018148585222661495,0.145362988114357,,,
+,,,,599,2025-10-21 09:16:09.161341,,,,,,,0.143015518784523,0.0022496182937175035,0.143015518784523
+0.1366923749446869,0.0009629467967897654,0.1366923749446869,35949.0,600,2025-10-21 09:18:41.689454,,,,,,,,,
+0.12858040630817413,0.001303314813412726,0.12858040630817413,35999.0,600,2025-10-21 09:23:09.845958,,,,,,,,,
+,,,,600,2025-10-21 09:24:48.767318,0.13976289331912994,0.0019219216192141175,0.13976289331912994,0.14774253964424133,0.0019514340674504638,0.14774253964424133,,,
+,,,,600,2025-10-21 09:25:17.016354,,,,,,,0.14211444556713104,0.00188044726382941,0.14211444556713104
+0.15178658068180084,0.004470342304557562,0.15178658068180084,36049.0,601,2025-10-21 09:31:27.018074,,,,,,,,,
+,,,,601,2025-10-21 09:33:45.043999,0.14393575489521027,0.002422390040010214,0.14393575489521027,0.1436697542667389,0.0015834971563890576,0.1436697542667389,,,
+,,,,601,2025-10-21 09:34:14.107575,,,,,,,0.14322516322135925,0.002266701078042388,0.14322516322135925
+0.13886001706123352,0.0014835081528872252,0.13886001706123352,36099.0,602,2025-10-21 09:39:07.705773,,,,,,,,,
+,,,,602,2025-10-21 09:42:26.674978,0.15518194437026978,0.002076459117233753,0.15518194437026978,0.1488141119480133,0.001963650807738304,0.1488141119480133,,,
+,,,,602,2025-10-21 09:42:53.570900,,,,,,,0.14676731824874878,0.0022822441533207893,0.14676731824874878
+0.1195233166217804,0.0012951071839779615,0.1195233166217804,36149.0,603,2025-10-21 09:46:25.480243,,,,,,,,,
+,,,,603,2025-10-21 09:50:41.938343,0.15265719592571259,0.0017832362791523337,0.15265719592571259,0.15736424922943115,0.0029216501861810684,0.15736424922943115,,,
+,,,,603,2025-10-21 09:51:08.157956,,,,,,,0.14308509230613708,0.0018893539672717452,0.14308509230613708
+0.14318367838859558,0.001028075348585844,0.14318367838859558,36199.0,604,2025-10-21 09:54:00.055250,,,,,,,,,
+,,,,604,2025-10-21 09:59:19.230702,0.142309308052063,0.0023673339746892452,0.142309308052063,0.15110668540000916,0.0017378039192408323,0.15110668540000916,,,
+,,,,604,2025-10-21 09:59:45.253483,,,,,,,0.14440378546714783,0.002573322504758835,0.14440378546714783
+0.16200806200504303,0.0012577633606269956,0.16200806200504303,36249.0,605,2025-10-21 10:01:58.503465,,,,,,,,,
+0.11142011731863022,0.0020867600105702877,0.11142011731863022,36299.0,605,2025-10-21 10:06:38.430908,,,,,,,,,
+,,,,605,2025-10-21 10:08:17.042791,0.15004967153072357,0.001518669188953936,0.15004967153072357,0.14380700886249542,0.0020836142357438803,0.14380700886249542,,,
+,,,,605,2025-10-21 10:08:43.336037,,,,,,,0.14217601716518402,0.002164488658308983,0.14217601716518402
+0.14161653816699982,0.0023904680274426937,0.14161653816699982,36349.0,606,2025-10-21 10:14:15.400667,,,,,,,,,
+,,,,606,2025-10-21 10:16:29.796225,0.15988357365131378,0.002723684534430504,0.15988357365131378,0.1502428948879242,0.002256257925182581,0.1502428948879242,,,
+,,,,606,2025-10-21 10:16:58.039753,,,,,,,0.14344072341918945,0.0022818015422672033,0.14344072341918945
+0.11608733981847763,0.0018951016245409846,0.11608733981847763,36399.0,607,2025-10-21 10:22:02.805549,,,,,,,,,
+,,,,607,2025-10-21 10:25:14.477384,0.13592836260795593,0.0016391854733228683,0.13592836260795593,0.15132205188274384,0.0025023005437105894,0.15132205188274384,,,
+,,,,607,2025-10-21 10:25:41.580391,,,,,,,0.13937413692474365,0.0019063279032707214,0.13937413692474365
+0.15829862654209137,0.003835183335468173,0.15829862654209137,36449.0,608,2025-10-21 10:30:01.026252,,,,,,,,,
+,,,,608,2025-10-21 10:34:13.858172,0.13352347910404205,0.001131880795583129,0.13352347910404205,0.1471928358078003,0.0016206410946324468,0.1471928358078003,,,
+,,,,608,2025-10-21 10:34:40.396143,,,,,,,0.1412350833415985,0.001955163199454546,0.1412350833415985
+0.12609799206256866,0.0014383203815668821,0.12609799206256866,36499.0,609,2025-10-21 10:37:27.617182,,,,,,,,,
+,,,,609,2025-10-21 10:42:55.870998,0.1480763554573059,0.0031278941314667463,0.1480763554573059,0.1403058022260666,0.0024343605618923903,0.1403058022260666,,,
+,,,,609,2025-10-21 10:43:23.155619,,,,,,,0.145809605717659,0.0023413393646478653,0.145809605717659
+0.126829594373703,0.003197859274223447,0.126829594373703,36549.0,610,2025-10-21 10:45:16.294925,,,,,,,,,
+0.14068135619163513,0.0014803200028836727,0.14068135619163513,36599.0,610,2025-10-21 10:49:37.256898,,,,,,,,,
+,,,,610,2025-10-21 10:51:12.904177,0.14271004498004913,0.0011868575820699334,0.14271004498004913,0.1510075032711029,0.0017232818063348532,0.1510075032711029,,,
+,,,,610,2025-10-21 10:51:40.247144,,,,,,,0.14280013740062714,0.002332808682695031,0.14280013740062714
+0.15007492899894714,0.0014424140099436045,0.15007492899894714,36649.0,611,2025-10-21 10:57:25.567924,,,,,,,,,
+,,,,611,2025-10-21 10:59:41.931340,0.14067985117435455,0.0015494987601414323,0.14067985117435455,0.14964158833026886,0.0018698300700634718,0.14964158833026886,,,
+,,,,611,2025-10-21 11:00:07.882358,,,,,,,0.143870547413826,0.002026207512244582,0.143870547413826
+0.11150211840867996,0.0027841017581522465,0.11150211840867996,36699.0,612,2025-10-21 11:05:15.876073,,,,,,,,,
+,,,,612,2025-10-21 11:08:11.697029,0.14179933071136475,0.0036279766354709864,0.14179933071136475,0.14425131678581238,0.003300608368590474,0.14425131678581238,,,
+,,,,612,2025-10-21 11:08:38.245400,,,,,,,0.14231383800506592,0.0022109979763627052,0.14231383800506592
+0.1293392926454544,0.003418085863813758,0.1293392926454544,36749.0,613,2025-10-21 11:12:30.508641,,,,,,,,,
+,,,,613,2025-10-21 11:16:56.793324,0.14266623556613922,0.0022650922182947397,0.14266623556613922,0.1490766704082489,0.0031814011745154858,0.1490766704082489,,,
+,,,,613,2025-10-21 11:17:22.484596,,,,,,,0.14485736191272736,0.002319013001397252,0.14485736191272736
+0.13841336965560913,0.0010424411157146096,0.13841336965560913,36799.0,614,2025-10-21 11:20:14.487570,,,,,,,,,
+,,,,614,2025-10-21 11:25:25.180770,0.13978248834609985,0.0021738852374255657,0.13978248834609985,0.1537763476371765,0.0021504119504243135,0.1537763476371765,,,
+,,,,614,2025-10-21 11:25:51.123255,,,,,,,0.14197805523872375,0.0020580498967319727,0.14197805523872375
+0.1526409387588501,0.001206127111800015,0.1526409387588501,36849.0,615,2025-10-21 11:27:41.809341,,,,,,,,,
+0.1668301522731781,0.0016583544202148914,0.1668301522731781,36899.0,615,2025-10-21 11:32:11.581876,,,,,,,,,
+,,,,615,2025-10-21 11:33:46.050920,0.1592525988817215,0.002331080147996545,0.1592525988817215,0.1387779414653778,0.0018356683431193233,0.1387779414653778,,,
+,,,,615,2025-10-21 11:34:11.650175,,,,,,,0.14377844333648682,0.0023630287032574415,0.14377844333648682
+0.17005011439323425,0.002444486366584897,0.17005011439323425,36949.0,616,2025-10-21 11:39:46.025635,,,,,,,,,
+,,,,616,2025-10-21 11:42:07.432729,0.15172939002513885,0.0039802356623113155,0.15172939002513885,0.1427215039730072,0.002430869732052088,0.1427215039730072,,,
+,,,,616,2025-10-21 11:42:34.316844,,,,,,,0.1400492638349533,0.0019325322937220335,0.1400492638349533
+0.1454593986272812,0.0027803226839751005,0.1454593986272812,36999.0,617,2025-10-21 11:47:32.011789,,,,,,,,,
+,,,,617,2025-10-21 11:50:58.125702,0.13711461424827576,0.002083786763250828,0.13711461424827576,0.14424516260623932,0.0024936755653470755,0.14424516260623932,,,
+,,,,617,2025-10-21 11:51:25.533712,,,,,,,0.14264805614948273,0.0022810634691268206,0.14264805614948273
+0.12172811478376389,0.0038243518210947514,0.12172811478376389,37049.0,618,2025-10-21 11:55:29.485110,,,,,,,,,
+,,,,618,2025-10-21 11:59:39.797268,0.150640606880188,0.0032106712460517883,0.150640606880188,0.13685208559036255,0.002272746292874217,0.13685208559036255,,,
+,,,,618,2025-10-21 12:00:28.342449,,,,,,,0.14523622393608093,0.002387114567682147,0.14523622393608093
+0.12388391047716141,0.0016014056745916605,0.12388391047716141,37099.0,619,2025-10-21 12:03:29.456932,,,,,,,,,
+,,,,619,2025-10-21 12:08:52.653201,0.14754927158355713,0.0022084431257098913,0.14754927158355713,0.1476195603609085,0.0020532533526420593,0.1476195603609085,,,
+,,,,619,2025-10-21 12:09:19.215282,,,,,,,0.14281664788722992,0.002063426421955228,0.14281664788722992
+0.13926756381988525,0.004724911414086819,0.13926756381988525,37149.0,620,2025-10-21 12:11:27.448870,,,,,,,,,
+0.15468762814998627,0.0012725164415314794,0.15468762814998627,37199.0,620,2025-10-21 12:16:12.733411,,,,,,,,,
+,,,,620,2025-10-21 12:17:50.867667,0.13935334980487823,0.0018864823505282402,0.13935334980487823,0.15669938921928406,0.0031468290835618973,0.15669938921928406,,,
+,,,,620,2025-10-21 12:18:18.111053,,,,,,,0.1418037861585617,0.0021407310850918293,0.1418037861585617
+0.14592571556568146,0.0007951814332045615,0.14592571556568146,37249.0,621,2025-10-21 12:23:58.547523,,,,,,,,,
+,,,,621,2025-10-21 12:26:13.705459,0.14999492466449738,0.002039643470197916,0.14999492466449738,0.15290561318397522,0.002407495630905032,0.15290561318397522,,,
+,,,,621,2025-10-21 12:26:40.446092,,,,,,,0.14512841403484344,0.002375780139118433,0.14512841403484344
+0.14926062524318695,0.0020327961537986994,0.14926062524318695,37299.0,622,2025-10-21 12:31:40.745880,,,,,,,,,
+,,,,622,2025-10-21 12:34:49.205347,0.15401311218738556,0.00308998697437346,0.15401311218738556,0.14665623009204865,0.0027983500622212887,0.14665623009204865,,,
+,,,,622,2025-10-21 12:35:16.841268,,,,,,,0.1434641182422638,0.0018873164663091302,0.1434641182422638
+0.165519118309021,0.0012327515287324786,0.165519118309021,37349.0,623,2025-10-21 12:38:56.760575,,,,,,,,,
+,,,,623,2025-10-21 12:43:19.551169,0.16067811846733093,0.002231171354651451,0.16067811846733093,0.1379370093345642,0.0019623583648353815,0.1379370093345642,,,
+,,,,623,2025-10-21 12:43:46.436000,,,,,,,0.1435193419456482,0.002307015936821699,0.1435193419456482
+0.15780115127563477,0.005390436388552189,0.15780115127563477,37399.0,624,2025-10-21 12:46:41.400962,,,,,,,,,
+,,,,624,2025-10-21 12:51:42.693246,0.14773264527320862,0.002022874541580677,0.14773264527320862,0.13765215873718262,0.0016719107516109943,0.13765215873718262,,,
+,,,,624,2025-10-21 12:52:09.621798,,,,,,,0.14439080655574799,0.002255580620840192,0.14439080655574799
+0.14134271442890167,0.0019548176787793636,0.14134271442890167,37449.0,625,2025-10-21 12:53:55.601025,,,,,,,,,
+0.14248499274253845,0.0034829226788133383,0.14248499274253845,37499.0,625,2025-10-21 12:58:33.867793,,,,,,,,,
+,,,,625,2025-10-21 13:00:11.883857,0.14301848411560059,0.0022471649572253227,0.14301848411560059,0.16691727936267853,0.004323086701333523,0.16691727936267853,,,
+,,,,625,2025-10-21 13:00:39.378451,,,,,,,0.1434355080127716,0.0018999569583684206,0.1434355080127716
+0.14608535170555115,0.0013381796889007092,0.14608535170555115,37549.0,626,2025-10-21 13:06:25.451220,,,,,,,,,
+,,,,626,2025-10-21 13:08:43.670624,0.14689338207244873,0.0012771111214533448,0.14689338207244873,0.14239725470542908,0.0010721574071794748,0.14239725470542908,,,
+,,,,626,2025-10-21 13:09:11.634488,,,,,,,0.1443546712398529,0.0023219927679747343,0.1443546712398529
+0.14551256597042084,0.0008018158259801567,0.14551256597042084,37599.0,627,2025-10-21 13:14:09.388002,,,,,,,,,
+,,,,627,2025-10-21 13:17:23.064723,0.1601114571094513,0.0022732196375727654,0.1601114571094513,0.14555497467517853,0.0019357743440195918,0.14555497467517853,,,
+,,,,627,2025-10-21 13:17:50.213175,,,,,,,0.14243987202644348,0.0021850045304745436,0.14243987202644348
+0.15079177916049957,0.003821553662419319,0.15079177916049957,37649.0,628,2025-10-21 13:21:47.974165,,,,,,,,,
+,,,,628,2025-10-21 13:26:08.119501,0.1541847139596939,0.0026358787436038256,0.1541847139596939,0.15258172154426575,0.001941043883562088,0.15258172154426575,,,
+,,,,628,2025-10-21 13:26:34.256601,,,,,,,0.13999375700950623,0.002313043689355254,0.13999375700950623
+0.12615375220775604,0.005180390551686287,0.12615375220775604,37699.0,629,2025-10-21 13:29:21.930353,,,,,,,,,
+,,,,629,2025-10-21 13:34:39.690755,0.14625589549541473,0.002292065415531397,0.14625589549541473,0.14204519987106323,0.002564207883551717,0.14204519987106323,,,
+,,,,629,2025-10-21 13:35:06.967078,,,,,,,0.13938657939434052,0.001919279806315899,0.13938657939434052
+0.1217799186706543,0.0011959454277530313,0.1217799186706543,37749.0,630,2025-10-21 13:36:54.820246,,,,,,,,,
+0.14213766157627106,0.001686378032900393,0.14213766157627106,37799.0,630,2025-10-21 13:41:36.857168,,,,,,,,,
+,,,,630,2025-10-21 13:43:14.085913,0.1434059739112854,0.0021516589913517237,0.1434059739112854,0.14879369735717773,0.002477355068549514,0.14879369735717773,,,
+,,,,630,2025-10-21 13:43:40.961946,,,,,,,0.14307944476604462,0.002089710673317313,0.14307944476604462
+0.15810655057430267,0.004589864052832127,0.15810655057430267,37849.0,631,2025-10-21 13:49:52.353357,,,,,,,,,
+,,,,631,2025-10-21 13:52:08.525448,0.15852294862270355,0.004330223426222801,0.15852294862270355,0.1555936187505722,0.0023625760804861784,0.1555936187505722,,,
+,,,,631,2025-10-21 13:52:35.943263,,,,,,,0.14657676219940186,0.0022892127744853497,0.14657676219940186
+0.12739305198192596,0.0013357845600694418,0.12739305198192596,37899.0,632,2025-10-21 13:57:21.267544,,,,,,,,,
+,,,,632,2025-10-21 14:00:43.382296,0.15064406394958496,0.003489688504487276,0.15064406394958496,0.1554807424545288,0.0016377897700294852,0.1554807424545288,,,
+,,,,632,2025-10-21 14:01:10.780415,,,,,,,0.1460152417421341,0.0019340422004461288,0.1460152417421341
+0.1380147933959961,0.0008176492410711944,0.1380147933959961,37949.0,633,2025-10-21 14:05:12.035625,,,,,,,,,
+,,,,633,2025-10-21 14:09:24.541555,0.15224237740039825,0.0037705805152654648,0.15224237740039825,0.15770897269248962,0.0037063697818666697,0.15770897269248962,,,
+,,,,633,2025-10-21 14:09:49.879407,,,,,,,0.14337150752544403,0.002395875519141555,0.14337150752544403
+0.1379997283220291,0.0061936103738844395,0.1379997283220291,37999.0,634,2025-10-21 14:12:36.871005,,,,,,,,,
+,,,,634,2025-10-21 14:18:05.063997,0.14725033938884735,0.002473056549206376,0.14725033938884735,0.15214954316616058,0.0016535818576812744,0.15214954316616058,,,
+,,,,634,2025-10-21 14:18:33.024373,,,,,,,0.14478427171707153,0.002349614864215255,0.14478427171707153
+0.13917061686515808,0.0011081068078055978,0.13917061686515808,38049.0,635,2025-10-21 14:20:19.293746,,,,,,,,,
+0.14962734282016754,0.002017676830291748,0.14962734282016754,38099.0,635,2025-10-21 14:24:53.889456,,,,,,,,,
+,,,,635,2025-10-21 14:26:29.554711,0.1443280428647995,0.0014707641676068306,0.1443280428647995,0.13946504890918732,0.003134844359010458,0.13946504890918732,,,
+,,,,635,2025-10-21 14:26:58.092588,,,,,,,0.14617985486984253,0.002505167154595256,0.14617985486984253
+0.17206373810768127,0.005366740748286247,0.17206373810768127,38149.0,636,2025-10-21 14:32:29.229671,,,,,,,,,
+,,,,636,2025-10-21 14:34:57.515699,0.14445073902606964,0.0015011203940957785,0.14445073902606964,0.16088590025901794,0.003899214556440711,0.16088590025901794,,,
+,,,,636,2025-10-21 14:35:25.156498,,,,,,,0.142735555768013,0.0021099140867590904,0.142735555768013
+0.11693153530359268,0.0007555403863079846,0.11693153530359268,38199.0,637,2025-10-21 14:40:25.348212,,,,,,,,,
+,,,,637,2025-10-21 14:43:38.535499,0.14779819548130035,0.0015845985617488623,0.14779819548130035,0.14382915198802948,0.003181412583217025,0.14382915198802948,,,
+,,,,637,2025-10-21 14:44:06.087799,,,,,,,0.14012424647808075,0.0020461392123252153,0.14012424647808075
+0.12713436782360077,0.0024535879492759705,0.12713436782360077,38249.0,638,2025-10-21 14:48:22.710533,,,,,,,,,
+,,,,638,2025-10-21 14:52:50.948059,0.13443371653556824,0.0017771079437807202,0.13443371653556824,0.14287103712558746,0.00143574015237391,0.14287103712558746,,,
+,,,,638,2025-10-21 14:53:18.168648,,,,,,,0.14294898509979248,0.002361682942137122,0.14294898509979248
+0.1312960535287857,0.0013622191036120057,0.1312960535287857,38299.0,639,2025-10-21 14:56:08.509185,,,,,,,,,
+,,,,639,2025-10-21 15:01:24.406357,0.1452731490135193,0.002892808523029089,0.1452731490135193,0.14676442742347717,0.002471938030794263,0.14676442742347717,,,
+,,,,639,2025-10-21 15:01:51.797999,,,,,,,0.14203423261642456,0.0022108417470008135,0.14203423261642456
+0.15975040197372437,0.001618647133000195,0.15975040197372437,38349.0,640,2025-10-21 15:03:46.428519,,,,,,,,,
+0.15232181549072266,0.006818380672484636,0.15232181549072266,38399.0,640,2025-10-21 15:08:10.400939,,,,,,,,,
+,,,,640,2025-10-21 15:09:49.419270,0.15838457643985748,0.0022155640181154013,0.15838457643985748,0.1485615372657776,0.0027142935432493687,0.1485615372657776,,,
+,,,,640,2025-10-21 15:10:16.341836,,,,,,,0.14420519769191742,0.0020787990652024746,0.14420519769191742
+0.14577001333236694,0.0008232157560996711,0.14577001333236694,38449.0,641,2025-10-21 15:16:27.291668,,,,,,,,,
+,,,,641,2025-10-21 15:18:45.713098,0.1589764654636383,0.002258904045447707,0.1589764654636383,0.1446077823638916,0.0026571161579340696,0.1446077823638916,,,
+,,,,641,2025-10-21 15:19:13.075759,,,,,,,0.14409877359867096,0.00231744721531868,0.14409877359867096
+0.1699039787054062,0.0018865996971726418,0.1699039787054062,38499.0,642,2025-10-21 15:24:30.249502,,,,,,,,,
+,,,,642,2025-10-21 15:27:53.746713,0.15095096826553345,0.002700815675780177,0.15095096826553345,0.1473419964313507,0.002008365001529455,0.1473419964313507,,,
+,,,,642,2025-10-21 15:28:21.421856,,,,,,,0.14522364735603333,0.0024255565367639065,0.14522364735603333
+0.1571279764175415,0.0015831328928470612,0.1571279764175415,38549.0,643,2025-10-21 15:32:29.089349,,,,,,,,,
+,,,,643,2025-10-21 15:36:58.716600,0.15630614757537842,0.002117103897035122,0.15630614757537842,0.15542209148406982,0.0024455443490296602,0.15542209148406982,,,
+,,,,643,2025-10-21 15:37:26.022672,,,,,,,0.14383727312088013,0.0021398907992988825,0.14383727312088013
+0.1487215906381607,0.0024702688679099083,0.1487215906381607,38599.0,644,2025-10-21 15:40:21.880681,,,,,,,,,
+,,,,644,2025-10-21 15:45:38.562667,0.13916243612766266,0.001453301520086825,0.13916243612766266,0.15021835267543793,0.0013783402973785996,0.15021835267543793,,,
+,,,,644,2025-10-21 15:46:05.575950,,,,,,,0.1415991336107254,0.002233690582215786,0.1415991336107254
+0.11981675028800964,0.0011657403083518147,0.11981675028800964,38649.0,645,2025-10-21 15:48:06.503988,,,,,,,,,
+0.14783382415771484,0.001213531824760139,0.14783382415771484,38699.0,645,2025-10-21 15:52:53.365987,,,,,,,,,
+,,,,645,2025-10-21 15:54:29.328222,0.141362264752388,0.00220800144597888,0.141362264752388,0.1509746015071869,0.004302940797060728,0.1509746015071869,,,
+,,,,645,2025-10-21 15:54:55.814213,,,,,,,0.1424107849597931,0.0022944100201129913,0.1424107849597931
+0.18001505732536316,0.002482511568814516,0.18001505732536316,38749.0,646,2025-10-21 16:00:51.680753,,,,,,,,,
+,,,,646,2025-10-21 16:03:08.726122,0.14739267528057098,0.0016262055141851306,0.14739267528057098,0.15548357367515564,0.0024574571289122105,0.15548357367515564,,,
+,,,,646,2025-10-21 16:03:36.717611,,,,,,,0.14419621229171753,0.0020107817836105824,0.14419621229171753
+0.1598476618528366,0.00275437138043344,0.1598476618528366,38799.0,647,2025-10-21 16:08:46.326162,,,,,,,,,
+,,,,647,2025-10-21 16:12:08.426287,0.14425325393676758,0.0015845813322812319,0.14425325393676758,0.14318014681339264,0.002288178773596883,0.14318014681339264,,,
+,,,,647,2025-10-21 16:12:34.761092,,,,,,,0.14430342614650726,0.00233194837346673,0.14430342614650726
+0.12768621742725372,0.003171617863699794,0.12768621742725372,38849.0,648,2025-10-21 16:16:50.884591,,,,,,,,,
+,,,,648,2025-10-21 16:20:50.840634,0.15735720098018646,0.0021861186251044273,0.15735720098018646,0.14014436304569244,0.0023115493822842836,0.14014436304569244,,,
+,,,,648,2025-10-21 16:21:17.917822,,,,,,,0.14457693696022034,0.0022151092998683453,0.14457693696022034
+0.18375062942504883,0.0013434032443910837,0.18375062942504883,38899.0,649,2025-10-21 16:24:04.502145,,,,,,,,,
+,,,,649,2025-10-21 16:29:28.522730,0.15748222172260284,0.002180957468226552,0.15748222172260284,0.15574641525745392,0.002611808944493532,0.15574641525745392,,,
+,,,,649,2025-10-21 16:29:55.020876,,,,,,,0.14196114242076874,0.002232469618320465,0.14196114242076874
+0.14636267721652985,0.003551468485966325,0.14636267721652985,38949.0,650,2025-10-21 16:31:43.216847,,,,,,,,,
+0.09875405579805374,0.002884875750169158,0.09875405579805374,38999.0,650,2025-10-21 16:36:28.026554,,,,,,,,,
+,,,,650,2025-10-21 16:38:02.795472,0.138456329703331,0.0018703099340200424,0.138456329703331,0.14368341863155365,0.0018993779085576534,0.14368341863155365,,,
+,,,,650,2025-10-21 16:38:28.916183,,,,,,,0.1425740122795105,0.0020342448260635138,0.1425740122795105
+0.17240723967552185,0.0020119172986596823,0.17240723967552185,39049.0,651,2025-10-21 16:44:15.204996,,,,,,,,,
+,,,,651,2025-10-21 16:46:31.145775,0.14627425372600555,0.0022372889798134565,0.14627425372600555,0.14720940589904785,0.0014193124370649457,0.14720940589904785,,,
+,,,,651,2025-10-21 16:46:58.188603,,,,,,,0.1461312174797058,0.0020734239369630814,0.1461312174797058
+0.14353808760643005,0.0037771835923194885,0.14353808760643005,39099.0,652,2025-10-21 16:52:01.491462,,,,,,,,,
+,,,,652,2025-10-21 16:55:20.162919,0.14866149425506592,0.0017698366427794099,0.14866149425506592,0.1426684409379959,0.003066409146413207,0.1426684409379959,,,
+,,,,652,2025-10-21 16:55:47.000251,,,,,,,0.14739510416984558,0.002302665263414383,0.14739510416984558
+0.11805149912834167,0.000884521403349936,0.11805149912834167,39149.0,653,2025-10-21 16:59:39.730680,,,,,,,,,
+,,,,653,2025-10-21 17:04:01.479542,0.1435765027999878,0.0022003785707056522,0.1435765027999878,0.15132062137126923,0.001735473982989788,0.15132062137126923,,,
+,,,,653,2025-10-21 17:04:28.522075,,,,,,,0.145022451877594,0.0023406287655234337,0.145022451877594
+0.1596354842185974,0.0011108902981504798,0.1596354842185974,39199.0,654,2025-10-21 17:07:21.401205,,,,,,,,,
+,,,,654,2025-10-21 17:12:58.382569,0.13791523873806,0.0017705918289721012,0.13791523873806,0.14433234930038452,0.001984307309612632,0.14433234930038452,,,
+,,,,654,2025-10-21 17:13:25.791311,,,,,,,0.14646224677562714,0.0019750341307371855,0.14646224677562714
+0.1439719945192337,0.0033847857266664505,0.1439719945192337,39249.0,655,2025-10-21 17:15:11.796393,,,,,,,,,
+0.12125081568956375,0.0009641725337132812,0.12125081568956375,39299.0,655,2025-10-21 17:20:07.043617,,,,,,,,,
+,,,,655,2025-10-21 17:21:43.132238,0.1538371592760086,0.0018180658807978034,0.1538371592760086,0.14143331348896027,0.0011307660024613142,0.14143331348896027,,,
+,,,,655,2025-10-21 17:22:12.003671,,,,,,,0.14208902418613434,0.0022748650517314672,0.14208902418613434
+0.18962319195270538,0.0067048389464616776,0.18962319195270538,39349.0,656,2025-10-21 17:27:56.223813,,,,,,,,,
+,,,,656,2025-10-21 17:30:34.098583,0.14284276962280273,0.0027303388342261314,0.14284276962280273,0.14304915070533752,0.0016767233610153198,0.14304915070533752,,,
+,,,,656,2025-10-21 17:31:01.594624,,,,,,,0.14321863651275635,0.0020883106626570225,0.14321863651275635
+0.13231603801250458,0.005272142589092255,0.13231603801250458,39399.0,657,2025-10-21 17:36:09.600976,,,,,,,,,
+,,,,657,2025-10-21 17:39:17.039109,0.14402185380458832,0.0021741469390690327,0.14402185380458832,0.14292138814926147,0.0024598082527518272,0.14292138814926147,,,
+,,,,657,2025-10-21 17:39:44.853809,,,,,,,0.14737999439239502,0.002368518617004156,0.14737999439239502
+0.16045360267162323,0.001766396570019424,0.16045360267162323,39449.0,658,2025-10-21 17:43:48.046240,,,,,,,,,
+,,,,658,2025-10-21 17:47:57.831859,0.14088070392608643,0.0014884453266859055,0.14088070392608643,0.14331451058387756,0.0020757531747221947,0.14331451058387756,,,
+,,,,658,2025-10-21 17:48:26.164623,,,,,,,0.14231187105178833,0.0024369771126657724,0.14231187105178833
+0.1563403457403183,0.0014037947403267026,0.1563403457403183,39499.0,659,2025-10-21 17:51:32.180842,,,,,,,,,
+,,,,659,2025-10-21 17:56:36.761671,0.13473956286907196,0.0019480769988149405,0.13473956286907196,0.14353516697883606,0.0016835164278745651,0.14353516697883606,,,
+,,,,659,2025-10-21 17:57:04.623045,,,,,,,0.14291468262672424,0.0020518058445304632,0.14291468262672424
+0.15762215852737427,0.001457265461795032,0.15762215852737427,39549.0,660,2025-10-21 17:58:51.506253,,,,,,,,,
+0.1548784226179123,0.004456827882677317,0.1548784226179123,39599.0,660,2025-10-21 18:03:34.074335,,,,,,,,,
+,,,,660,2025-10-21 18:05:11.525077,0.1432245969772339,0.00212897639721632,0.1432245969772339,0.14620351791381836,0.0017061757389456034,0.14620351791381836,,,
+,,,,660,2025-10-21 18:05:37.196073,,,,,,,0.1432235836982727,0.0019838896114379168,0.1432235836982727
+0.12905088067054749,0.0009628814877942204,0.12905088067054749,39649.0,661,2025-10-21 18:11:37.479048,,,,,,,,,
+,,,,661,2025-10-21 18:13:53.189474,0.1455143839120865,0.0019803810864686966,0.1455143839120865,0.14840726554393768,0.0012607572134584188,0.14840726554393768,,,
+,,,,661,2025-10-21 18:14:20.447805,,,,,,,0.14419397711753845,0.00234255101531744,0.14419397711753845
+0.13871344923973083,0.0053885579109191895,0.13871344923973083,39699.0,662,2025-10-21 18:19:04.469838,,,,,,,,,
+,,,,662,2025-10-21 18:22:20.536866,0.14055608212947845,0.0024360010866075754,0.14055608212947845,0.1449189931154251,0.0018585072830319405,0.1449189931154251,,,
+,,,,662,2025-10-21 18:22:48.373380,,,,,,,0.14227265119552612,0.0022270302288234234,0.14227265119552612
+0.12737931311130524,0.001449665753170848,0.12737931311130524,39749.0,663,2025-10-21 18:26:58.844826,,,,,,,,,
+,,,,663,2025-10-21 18:31:06.704526,0.14982618391513824,0.002248269971460104,0.14982618391513824,0.14398063719272614,0.0023004866670817137,0.14398063719272614,,,
+,,,,663,2025-10-21 18:31:35.121760,,,,,,,0.14297358691692352,0.0022963793016970158,0.14297358691692352
+0.14520704746246338,0.0026230623479932547,0.14520704746246338,39799.0,664,2025-10-21 18:34:21.059869,,,,,,,,,
+,,,,664,2025-10-21 18:39:39.128734,0.15041880309581757,0.001955324085429311,0.15041880309581757,0.14294013381004333,0.00212565204128623,0.14294013381004333,,,
+,,,,664,2025-10-21 18:40:07.795496,,,,,,,0.1440252959728241,0.00234356545843184,0.1440252959728241
+0.12400969117879868,0.0014004016993567348,0.12400969117879868,39849.0,665,2025-10-21 18:42:07.437706,,,,,,,,,
+0.1523231416940689,0.0014181885635480285,0.1523231416940689,39899.0,665,2025-10-21 18:46:46.762224,,,,,,,,,
+,,,,665,2025-10-21 18:48:26.187349,0.14455212652683258,0.0024527201894670725,0.14455212652683258,0.15396220982074738,0.002220574766397476,0.15396220982074738,,,
+,,,,665,2025-10-21 18:48:53.525039,,,,,,,0.1448151022195816,0.0021286392584443092,0.1448151022195816
+0.14217416942119598,0.0008390203001908958,0.14217416942119598,39949.0,666,2025-10-21 18:54:41.104898,,,,,,,,,
+,,,,666,2025-10-21 18:57:00.804394,0.1499868780374527,0.0019364624749869108,0.1499868780374527,0.15284176170825958,0.0019163083052262664,0.15284176170825958,,,
+,,,,666,2025-10-21 18:57:28.133884,,,,,,,0.14297959208488464,0.0024213099386543036,0.14297959208488464
+0.1351328045129776,0.003161756554618478,0.1351328045129776,39999.0,667,2025-10-21 19:02:26.671726,,,,,,,,,
+,,,,667,2025-10-21 19:05:51.086130,0.14983995258808136,0.0026036486960947514,0.14983995258808136,0.14088737964630127,0.0036042167339473963,0.14088737964630127,,,
+,,,,667,2025-10-21 19:06:19.789897,,,,,,,0.14038386940956116,0.0021572744008153677,0.14038386940956116
+0.1451341211795807,0.003547689877450466,0.1451341211795807,40049.0,668,2025-10-21 19:10:08.940105,,,,,,,,,
+,,,,668,2025-10-21 19:14:15.127377,0.15371043980121613,0.0021813472267240286,0.15371043980121613,0.15162625908851624,0.0017880782252177596,0.15162625908851624,,,
+,,,,668,2025-10-21 19:14:42.597643,,,,,,,0.14172843098640442,0.0024724011309444904,0.14172843098640442
+0.1260685920715332,0.0007479678024537861,0.1260685920715332,40099.0,669,2025-10-21 19:17:33.072840,,,,,,,,,
+,,,,669,2025-10-21 19:22:46.129267,0.14662517607212067,0.0018569297390058637,0.14662517607212067,0.12974008917808533,0.0011412129970267415,0.12974008917808533,,,
+,,,,669,2025-10-21 19:23:37.309625,,,,,,,0.1396072804927826,0.002110064262524247,0.1396072804927826
+0.1442456990480423,0.002358806785196066,0.1442456990480423,40149.0,670,2025-10-21 19:25:37.296684,,,,,,,,,
+0.1341681182384491,0.0012501879828050733,0.1341681182384491,40199.0,670,2025-10-21 19:29:58.970427,,,,,,,,,
+,,,,670,2025-10-21 19:31:33.923407,0.14536432921886444,0.002300177002325654,0.14536432921886444,0.14575831592082977,0.0017902568215504289,0.14575831592082977,,,
+,,,,670,2025-10-21 19:32:00.649750,,,,,,,0.14039461314678192,0.001862618955783546,0.14039461314678192
+0.15143121778964996,0.001128062722273171,0.15143121778964996,40249.0,671,2025-10-21 19:37:38.174866,,,,,,,,,
+,,,,671,2025-10-21 19:39:58.561110,0.15809796750545502,0.0026378172915428877,0.15809796750545502,0.14410817623138428,0.0033300663344562054,0.14410817623138428,,,
+,,,,671,2025-10-21 19:40:25.754609,,,,,,,0.14518046379089355,0.002101171063259244,0.14518046379089355
+0.1479814499616623,0.003363879630342126,0.1479814499616623,40299.0,672,2025-10-21 19:45:15.069347,,,,,,,,,
+,,,,672,2025-10-21 19:48:41.028110,0.1573423147201538,0.0017426053527742624,0.1573423147201538,0.14389771223068237,0.002245118375867605,0.14389771223068237,,,
+,,,,672,2025-10-21 19:49:06.473280,,,,,,,0.14538289606571198,0.002209840342402458,0.14538289606571198
+0.13556022942066193,0.00133285962510854,0.13556022942066193,40349.0,673,2025-10-21 19:53:27.982731,,,,,,,,,
+,,,,673,2025-10-21 19:57:35.191015,0.14201757311820984,0.0031739692203700542,0.14201757311820984,0.13595230877399445,0.0026200164575129747,0.13595230877399445,,,
+,,,,673,2025-10-21 19:58:27.183711,,,,,,,0.14144372940063477,0.00213329098187387,0.14144372940063477
+0.13951422274112701,0.0012849281774833798,0.13951422274112701,40399.0,674,2025-10-21 20:01:18.745245,,,,,,,,,
+,,,,674,2025-10-21 20:06:27.867849,0.1395944505929947,0.002315946388989687,0.1395944505929947,0.15052670240402222,0.0026679853908717632,0.15052670240402222,,,
+,,,,674,2025-10-21 20:06:53.757493,,,,,,,0.14426779747009277,0.0023002729285508394,0.14426779747009277
+0.1322370171546936,0.0018527582287788391,0.1322370171546936,40449.0,675,2025-10-21 20:08:35.868793,,,,,,,,,
+0.17755888402462006,0.007356447167694569,0.17755888402462006,40499.0,675,2025-10-21 20:13:22.503929,,,,,,,,,
+,,,,675,2025-10-21 20:14:57.330269,0.1459667831659317,0.0024603542406111956,0.1459667831659317,0.14065828919410706,0.0020337540190666914,0.14065828919410706,,,
+,,,,675,2025-10-21 20:15:24.089425,,,,,,,0.14157968759536743,0.0022030677646398544,0.14157968759536743
+0.13393466174602509,0.002886516973376274,0.13393466174602509,40549.0,676,2025-10-21 20:20:57.962929,,,,,,,,,
+,,,,676,2025-10-21 20:23:29.253859,0.1434752345085144,0.0023542444687336683,0.1434752345085144,0.14537186920642853,0.0019962729420512915,0.14537186920642853,,,
+,,,,676,2025-10-21 20:23:57.017255,,,,,,,0.14268380403518677,0.0022764706518501043,0.14268380403518677
+0.1404966413974762,0.001945715630427003,0.1404966413974762,40599.0,677,2025-10-21 20:28:40.770242,,,,,,,,,
+,,,,677,2025-10-21 20:31:50.414737,0.14075663685798645,0.002683299593627453,0.14075663685798645,0.14499817788600922,0.0025532355066388845,0.14499817788600922,,,
+,,,,677,2025-10-21 20:32:18.783058,,,,,,,0.14303193986415863,0.0022564008831977844,0.14303193986415863
+0.13169358670711517,0.0018148861126974225,0.13169358670711517,40649.0,678,2025-10-21 20:36:11.017902,,,,,,,,,
+,,,,678,2025-10-21 20:40:12.064645,0.1468517780303955,0.00163749058265239,0.1468517780303955,0.14964069426059723,0.002685101702809334,0.14964069426059723,,,
+,,,,678,2025-10-21 20:40:38.950379,,,,,,,0.14301399886608124,0.002285648137331009,0.14301399886608124
+0.14385467767715454,0.0022120443172752857,0.14385467767715454,40699.0,679,2025-10-21 20:43:42.019597,,,,,,,,,
+,,,,679,2025-10-21 20:48:55.353237,0.1550612896680832,0.0031600305810570717,0.1550612896680832,0.14338386058807373,0.0019964510574936867,0.14338386058807373,,,
+,,,,679,2025-10-21 20:49:22.195863,,,,,,,0.14091618359088898,0.002033030381426215,0.14091618359088898
+0.17211554944515228,0.004150867462158203,0.17211554944515228,40749.0,680,2025-10-21 20:51:10.172744,,,,,,,,,
+0.1536673903465271,0.0017057607183232903,0.1536673903465271,40799.0,680,2025-10-21 20:55:52.327705,,,,,,,,,
+,,,,680,2025-10-21 20:57:29.455825,0.14094869792461395,0.0012166885426267982,0.14094869792461395,0.1400606781244278,0.0023396962787956,0.1400606781244278,,,
+,,,,680,2025-10-21 20:57:57.282217,,,,,,,0.1450716108083725,0.0020314070861786604,0.1450716108083725
+0.15235793590545654,0.0019170475425198674,0.15235793590545654,40849.0,681,2025-10-21 21:03:45.005475,,,,,,,,,
+,,,,681,2025-10-21 21:05:58.378309,0.14220140874385834,0.002015490783378482,0.14220140874385834,0.14472898840904236,0.002174227498471737,0.14472898840904236,,,
+,,,,681,2025-10-21 21:06:26.981780,,,,,,,0.14292094111442566,0.0022132606245577335,0.14292094111442566
+0.11846688389778137,0.002413570648059249,0.11846688389778137,40899.0,682,2025-10-21 21:11:11.417165,,,,,,,,,
+,,,,682,2025-10-21 21:14:19.218191,0.1453770101070404,0.0028013770934194326,0.1453770101070404,0.15688009560108185,0.002404858125373721,0.15688009560108185,,,
+,,,,682,2025-10-21 21:14:46.160553,,,,,,,0.14521245658397675,0.0021971797104924917,0.14521245658397675
+0.13230742514133453,0.00155736249871552,0.13230742514133453,40949.0,683,2025-10-21 21:18:36.745980,,,,,,,,,
+,,,,683,2025-10-21 21:22:53.923152,0.1511888951063156,0.001749410293996334,0.1511888951063156,0.15248744189739227,0.0025178997311741114,0.15248744189739227,,,
+,,,,683,2025-10-21 21:23:20.896711,,,,,,,0.1387128233909607,0.00197628908790648,0.1387128233909607
+0.1345730423927307,0.0009836627868935466,0.1345730423927307,40999.0,684,2025-10-21 21:26:08.858731,,,,,,,,,
+,,,,684,2025-10-21 21:31:10.691841,0.1397087424993515,0.0014474308118224144,0.1397087424993515,0.14335022866725922,0.0011347593972459435,0.14335022866725922,,,
+,,,,684,2025-10-21 21:31:39.818522,,,,,,,0.14575378596782684,0.002095821313560009,0.14575378596782684
+0.14132115244865417,0.0013763114111497998,0.14132115244865417,41049.0,685,2025-10-21 21:33:35.816106,,,,,,,,,
+0.1356167495250702,0.0010773660615086555,0.1356167495250702,41099.0,685,2025-10-21 21:38:18.397885,,,,,,,,,
+,,,,685,2025-10-21 21:39:57.003621,0.14838334918022156,0.0019599522929638624,0.14838334918022156,0.138945534825325,0.001472936011850834,0.138945534825325,,,
+,,,,685,2025-10-21 21:40:24.618820,,,,,,,0.1400623321533203,0.002264897571876645,0.1400623321533203
+0.13206347823143005,0.0033505235332995653,0.13206347823143005,41149.0,686,2025-10-21 21:46:06.504665,,,,,,,,,
+,,,,686,2025-10-21 21:48:43.398886,0.14384107291698456,0.0028461359906941652,0.14384107291698456,0.1401119828224182,0.0018841656856238842,0.1401119828224182,,,
+,,,,686,2025-10-21 21:49:10.499077,,,,,,,0.13984552025794983,0.0021437369287014008,0.13984552025794983
+0.13517265021800995,0.0007584091508761048,0.13517265021800995,41199.0,687,2025-10-21 21:53:51.283230,,,,,,,,,
+,,,,687,2025-10-21 21:57:11.917397,0.15714870393276215,0.002712477231398225,0.15714870393276215,0.15745805203914642,0.002227403223514557,0.15745805203914642,,,
+,,,,687,2025-10-21 21:57:38.040629,,,,,,,0.14226078987121582,0.002174173016101122,0.14226078987121582
+0.1257612258195877,0.0010196259245276451,0.1257612258195877,41249.0,688,2025-10-21 22:01:41.639004,,,,,,,,,
+,,,,688,2025-10-21 22:05:45.826962,0.14509817957878113,0.0015478305285796523,0.14509817957878113,0.14892543852329254,0.002077561104670167,0.14892543852329254,,,
+,,,,688,2025-10-21 22:06:12.569632,,,,,,,0.1413363516330719,0.002040080027654767,0.1413363516330719
+0.17517083883285522,0.002301463158801198,0.17517083883285522,41299.0,689,2025-10-21 22:08:56.652901,,,,,,,,,
+,,,,689,2025-10-21 22:14:24.751101,0.149041548371315,0.0017223141621798277,0.149041548371315,0.14686766266822815,0.0019171069143339992,0.14686766266822815,,,
+,,,,689,2025-10-21 22:14:51.643015,,,,,,,0.14383967220783234,0.0021664800588041544,0.14383967220783234
+0.14039604365825653,0.0035647123586386442,0.14039604365825653,41349.0,690,2025-10-21 22:16:52.275250,,,,,,,,,
+0.11559893190860748,0.0006267716526053846,0.11559893190860748,41399.0,690,2025-10-21 22:21:27.393466,,,,,,,,,
+,,,,690,2025-10-21 22:22:59.761686,0.153013676404953,0.0027276326436549425,0.153013676404953,0.1486371010541916,0.0012671228032559156,0.1486371010541916,,,
+,,,,690,2025-10-21 22:23:27.276006,,,,,,,0.14434000849723816,0.0021667189430445433,0.14434000849723816
+0.17126582562923431,0.0028658797964453697,0.17126582562923431,41449.0,691,2025-10-21 22:29:12.197208,,,,,,,,,
+,,,,691,2025-10-21 22:31:28.511488,0.13487645983695984,0.0034559464547783136,0.13487645983695984,0.15690332651138306,0.002281332155689597,0.15690332651138306,,,
+,,,,691,2025-10-21 22:31:55.621909,,,,,,,0.14490072429180145,0.002090491820126772,0.14490072429180145
+0.15717782080173492,0.0017988929757848382,0.15717782080173492,41499.0,692,2025-10-21 22:36:59.127835,,,,,,,,,
+,,,,692,2025-10-21 22:40:11.647283,0.13988815248012543,0.0031039780005812645,0.13988815248012543,0.15069261193275452,0.00330534134991467,0.15069261193275452,,,
+,,,,692,2025-10-21 22:40:38.597355,,,,,,,0.14496155083179474,0.002326485002413392,0.14496155083179474
+0.12807871401309967,0.0012624923838302493,0.12807871401309967,41549.0,693,2025-10-21 22:44:28.227767,,,,,,,,,
+,,,,693,2025-10-21 22:48:29.609776,0.14418022334575653,0.0023254668340086937,0.14418022334575653,0.15234151482582092,0.0018814783543348312,0.15234151482582092,,,
+,,,,693,2025-10-21 22:48:57.383716,,,,,,,0.14021416008472443,0.002117719268426299,0.14021416008472443
+0.1575780212879181,0.00798655766993761,0.1575780212879181,41599.0,694,2025-10-21 22:51:40.025750,,,,,,,,,
+,,,,694,2025-10-21 22:56:58.569455,0.14824965596199036,0.001823335187509656,0.14824965596199036,0.13610446453094482,0.0018880728166550398,0.13610446453094482,,,
+,,,,694,2025-10-21 22:57:24.626598,,,,,,,0.13704735040664673,0.0019855389837175608,0.13704735040664673
+0.13789348304271698,0.001414313679561019,0.13789348304271698,41649.0,695,2025-10-21 22:59:13.791953,,,,,,,,,
+0.1580890715122223,0.001702276524156332,0.1580890715122223,41699.0,695,2025-10-21 23:04:29.684644,,,,,,,,,
+,,,,695,2025-10-21 23:06:08.903814,0.14142298698425293,0.0025186489801853895,0.14142298698425293,0.13955792784690857,0.002143791876733303,0.13955792784690857,,,
+,,,,695,2025-10-21 23:06:35.767753,,,,,,,0.14345590770244598,0.002004503272473812,0.14345590770244598
+0.09575363993644714,0.00074621825478971,0.09575363993644714,41749.0,696,2025-10-21 23:12:08.290275,,,,,,,,,
+,,,,696,2025-10-21 23:14:48.745841,0.1535545438528061,0.0017107268795371056,0.1535545438528061,0.14237059652805328,0.0025607366114854813,0.14237059652805328,,,
+,,,,696,2025-10-21 23:15:15.823608,,,,,,,0.14111655950546265,0.002110336208716035,0.14111655950546265
+0.13649071753025055,0.009422198869287968,0.13649071753025055,41799.0,697,2025-10-21 23:19:53.961062,,,,,,,,,
+,,,,697,2025-10-21 23:23:16.306208,0.1488254964351654,0.0015662538353353739,0.1488254964351654,0.14427511394023895,0.002341632265597582,0.14427511394023895,,,
+,,,,697,2025-10-21 23:23:42.939087,,,,,,,0.1385895013809204,0.0022745917085558176,0.1385895013809204
+0.14900198578834534,0.0017016122583299875,0.14900198578834534,41849.0,698,2025-10-21 23:27:37.504265,,,,,,,,,
+,,,,698,2025-10-21 23:32:01.422191,0.16483905911445618,0.004367343615740538,0.16483905911445618,0.14608801901340485,0.002688347129151225,0.14608801901340485,,,
+,,,,698,2025-10-21 23:32:28.528084,,,,,,,0.14032089710235596,0.0022670826874673367,0.14032089710235596
+0.1481647491455078,0.0039510298520326614,0.1481647491455078,41899.0,699,2025-10-21 23:35:18.755357,,,,,,,,,
+,,,,699,2025-10-21 23:40:22.561915,0.14612440764904022,0.0018554351991042495,0.14612440764904022,0.15033479034900665,0.003220090875402093,0.15033479034900665,,,
+,,,,699,2025-10-21 23:40:49.661906,,,,,,,0.1470276266336441,0.0028774570673704147,0.1470276266336441
+0.1404278427362442,0.0017276505241170526,0.1404278427362442,41949.0,700,2025-10-21 23:42:37.065088,,,,,,,,,
+0.1816006600856781,0.002220108639448881,0.1816006600856781,41999.0,700,2025-10-21 23:47:17.617698,,,,,,,,,
+,,,,700,2025-10-21 23:48:53.742902,0.15804269909858704,0.002917433390393853,0.15804269909858704,0.16032442450523376,0.0023655008990317583,0.16032442450523376,,,
+,,,,700,2025-10-21 23:49:21.042010,,,,,,,0.1427842080593109,0.002286092145368457,0.1427842080593109
+0.14769327640533447,0.0016718099359422922,0.14769327640533447,42049.0,701,2025-10-21 23:55:34.867252,,,,,,,,,
+,,,,701,2025-10-21 23:57:50.625359,0.15221549570560455,0.002218443900346756,0.15221549570560455,0.14297804236412048,0.0020150982309132814,0.14297804236412048,,,
+,,,,701,2025-10-21 23:58:16.868804,,,,,,,0.13940711319446564,0.0019705346785485744,0.13940711319446564
+0.1554199904203415,0.003478801343590021,0.1554199904203415,42099.0,702,2025-10-22 00:03:26.304325,,,,,,,,,
+,,,,702,2025-10-22 00:06:46.466193,0.13919131457805634,0.002771891187876463,0.13919131457805634,0.14045269787311554,0.003260794561356306,0.14045269787311554,,,
+,,,,702,2025-10-22 00:07:12.551474,,,,,,,0.14202123880386353,0.002293100580573082,0.14202123880386353
+0.13963066041469574,0.0014132378855720162,0.13963066041469574,42149.0,703,2025-10-22 00:10:54.173472,,,,,,,,,
+,,,,703,2025-10-22 00:15:02.847703,0.1402934044599533,0.0016438725870102644,0.1402934044599533,0.14229810237884521,0.0022144177928566933,0.14229810237884521,,,
+,,,,703,2025-10-22 00:15:28.905807,,,,,,,0.14220795035362244,0.0022085467353463173,0.14220795035362244
+0.10951006412506104,0.0010907418327406049,0.10951006412506104,42199.0,704,2025-10-22 00:18:20.321310,,,,,,,,,
+,,,,704,2025-10-22 00:23:43.001744,0.14073558151721954,0.00255028554238379,0.14073558151721954,0.1454639583826065,0.001963303191587329,0.1454639583826065,,,
+,,,,704,2025-10-22 00:24:09.717554,,,,,,,0.13909535109996796,0.0018753483891487122,0.13909535109996796
+0.13593348860740662,0.001602035015821457,0.13593348860740662,42249.0,705,2025-10-22 00:26:01.567732,,,,,,,,,
+0.13102956116199493,0.0011723722564056516,0.13102956116199493,42299.0,705,2025-10-22 00:30:40.363942,,,,,,,,,
+,,,,705,2025-10-22 00:32:17.108270,0.14659063518047333,0.0019082739017903805,0.14659063518047333,0.14608830213546753,0.0020112309139221907,0.14608830213546753,,,
+,,,,705,2025-10-22 00:32:45.288191,,,,,,,0.14361867308616638,0.002300326945260167,0.14361867308616638
+0.12435241043567657,0.002025488531216979,0.12435241043567657,42349.0,706,2025-10-22 00:38:32.099132,,,,,,,,,
+,,,,706,2025-10-22 00:40:47.623176,0.14324326813220978,0.0011847428977489471,0.14324326813220978,0.1501854807138443,0.0019238220993429422,0.1501854807138443,,,
+,,,,706,2025-10-22 00:41:14.369888,,,,,,,0.147755965590477,0.002665891544893384,0.147755965590477
+0.15493406355381012,0.0011705888900905848,0.15493406355381012,42399.0,707,2025-10-22 00:46:14.493065,,,,,,,,,
+,,,,707,2025-10-22 00:49:24.637322,0.14247743785381317,0.002594991121441126,0.14247743785381317,0.14054431021213531,0.0025648276787251234,0.14054431021213531,,,
+,,,,707,2025-10-22 00:49:51.479207,,,,,,,0.14293047785758972,0.002110229106619954,0.14293047785758972
+0.14340965449810028,0.004716922994703054,0.14340965449810028,42449.0,708,2025-10-22 00:53:52.279983,,,,,,,,,
+,,,,708,2025-10-22 00:57:59.803584,0.16505089402198792,0.002733491826802492,0.16505089402198792,0.14982205629348755,0.0026213033124804497,0.14982205629348755,,,
+,,,,708,2025-10-22 00:58:27.079880,,,,,,,0.14149507880210876,0.0021442046854645014,0.14149507880210876
+0.14853231608867645,0.003879331052303314,0.14853231608867645,42499.0,709,2025-10-22 01:01:15.229107,,,,,,,,,
+,,,,709,2025-10-22 01:06:58.141844,0.14340977370738983,0.0027463093865662813,0.14340977370738983,0.14660196006298065,0.0034722997806966305,0.14660196006298065,,,
+,,,,709,2025-10-22 01:07:24.304443,,,,,,,0.14402109384536743,0.0020981179550290108,0.14402109384536743
+0.1558302342891693,0.004113299772143364,0.1558302342891693,42549.0,710,2025-10-22 01:09:18.631887,,,,,,,,,
+0.15919488668441772,0.0019455243600532413,0.15919488668441772,42599.0,710,2025-10-22 01:14:01.825186,,,,,,,,,
+,,,,710,2025-10-22 01:15:38.784241,0.13321258127689362,0.0010918371845036745,0.13321258127689362,0.14438094198703766,0.0018333068583160639,0.14438094198703766,,,
+,,,,710,2025-10-22 01:16:05.279363,,,,,,,0.14350858330726624,0.0026114906650036573,0.14350858330726624
+0.16712763905525208,0.0042570531368255615,0.16712763905525208,42649.0,711,2025-10-22 01:21:52.404321,,,,,,,,,
+,,,,711,2025-10-22 01:24:08.947266,0.14599274098873138,0.0033174657728523016,0.14599274098873138,0.1586395651102066,0.003929615952074528,0.1586395651102066,,,
+,,,,711,2025-10-22 01:24:36.239472,,,,,,,0.14426031708717346,0.0023903336841613054,0.14426031708717346
+0.14364248514175415,0.0034885969944298267,0.14364248514175415,42699.0,712,2025-10-22 01:29:18.423722,,,,,,,,,
+,,,,712,2025-10-22 01:32:38.546643,0.14529280364513397,0.002182520693168044,0.14529280364513397,0.13866639137268066,0.0025733800139278173,0.13866639137268066,,,
+,,,,712,2025-10-22 01:33:06.279228,,,,,,,0.13779041171073914,0.0019045515218749642,0.13779041171073914
+0.1444537341594696,0.0038586053997278214,0.1444537341594696,42749.0,713,2025-10-22 01:36:44.449318,,,,,,,,,
+,,,,713,2025-10-22 01:40:57.542834,0.1491779237985611,0.0026014067698270082,0.1491779237985611,0.15175344049930573,0.0036986113991588354,0.15175344049930573,,,
+,,,,713,2025-10-22 01:41:23.886132,,,,,,,0.14112386107444763,0.0021172002889215946,0.14112386107444763
+0.14627043902873993,0.003720373846590519,0.14627043902873993,42799.0,714,2025-10-22 01:44:22.661143,,,,,,,,,
+,,,,714,2025-10-22 01:49:45.366777,0.14243197441101074,0.002594270743429661,0.14243197441101074,0.14440178871154785,0.0021446405444294214,0.14440178871154785,,,
+,,,,714,2025-10-22 01:50:12.805609,,,,,,,0.14143328368663788,0.0021939906291663647,0.14143328368663788
+0.14213860034942627,0.003319785464555025,0.14213860034942627,42849.0,715,2025-10-22 01:51:56.327517,,,,,,,,,
+0.14229866862297058,0.002829563105478883,0.14229866862297058,42899.0,715,2025-10-22 01:56:40.202971,,,,,,,,,
+,,,,715,2025-10-22 01:58:16.509466,0.13184025883674622,0.0015447190962731838,0.13184025883674622,0.14153945446014404,0.0024728982243686914,0.14153945446014404,,,
+,,,,715,2025-10-22 01:58:44.694217,,,,,,,0.1447959989309311,0.002056530909612775,0.1447959989309311
+0.16430266201496124,0.004303733352571726,0.16430266201496124,42949.0,716,2025-10-22 02:04:38.365713,,,,,,,,,
+,,,,716,2025-10-22 02:06:47.761127,0.1450456827878952,0.0023624186869710684,0.1450456827878952,0.15330427885055542,0.0028289214242249727,0.15330427885055542,,,
+,,,,716,2025-10-22 02:07:14.565330,,,,,,,0.14114131033420563,0.002365638967603445,0.14114131033420563
+0.1562625914812088,0.0012213436421006918,0.1562625914812088,42999.0,717,2025-10-22 02:12:15.125950,,,,,,,,,
+,,,,717,2025-10-22 02:15:35.112298,0.13777917623519897,0.0016072236467152834,0.13777917623519897,0.14422665536403656,0.001633535255677998,0.14422665536403656,,,
+,,,,717,2025-10-22 02:16:00.219958,,,,,,,0.14595124125480652,0.0025686020962893963,0.14595124125480652
+0.1656414270401001,0.001216848730109632,0.1656414270401001,43049.0,718,2025-10-22 02:20:01.689479,,,,,,,,,
+,,,,718,2025-10-22 02:24:24.098918,0.1377338021993637,0.0015243557281792164,0.1377338021993637,0.14797481894493103,0.0024183010682463646,0.14797481894493103,,,
+,,,,718,2025-10-22 02:24:49.876140,,,,,,,0.14346647262573242,0.0020784689113497734,0.14346647262573242
+0.13688033819198608,0.0031187033746391535,0.13688033819198608,43099.0,719,2025-10-22 02:27:50.541345,,,,,,,,,
+,,,,719,2025-10-22 02:32:50.682436,0.13825538754463196,0.0023862274829298258,0.13825538754463196,0.14374759793281555,0.0019570328295230865,0.14374759793281555,,,
+,,,,719,2025-10-22 02:33:16.115542,,,,,,,0.13970009982585907,0.0025364411994814873,0.13970009982585907
+0.13328684866428375,0.0007612046902067959,0.13328684866428375,43149.0,720,2025-10-22 02:35:06.516015,,,,,,,,,
+0.14657993614673615,0.002582541899755597,0.14657993614673615,43199.0,720,2025-10-22 02:39:54.368257,,,,,,,,,
+,,,,720,2025-10-22 02:41:29.229432,0.1472783386707306,0.0032752864062786102,0.1472783386707306,0.1496538519859314,0.0019299680134281516,0.1496538519859314,,,
+,,,,720,2025-10-22 02:41:55.611829,,,,,,,0.14553427696228027,0.0023786379024386406,0.14553427696228027
+0.16138070821762085,0.0026101868133991957,0.16138070821762085,43249.0,721,2025-10-22 02:47:54.613258,,,,,,,,,
+,,,,721,2025-10-22 02:50:13.702354,0.14528420567512512,0.0017105912556871772,0.14528420567512512,0.14219382405281067,0.0026186970062553883,0.14219382405281067,,,
+,,,,721,2025-10-22 02:50:40.132935,,,,,,,0.13928525149822235,0.002114070812240243,0.13928525149822235
+0.13791218400001526,0.003192238276824355,0.13791218400001526,43299.0,722,2025-10-22 02:55:30.348535,,,,,,,,,
+,,,,722,2025-10-22 02:58:53.349777,0.14591285586357117,0.0024258741177618504,0.14591285586357117,0.1485370695590973,0.00282391463406384,0.1485370695590973,,,
+,,,,722,2025-10-22 02:59:20.468994,,,,,,,0.13907849788665771,0.0019757389090955257,0.13907849788665771
+0.14174813032150269,0.0013101324439048767,0.14174813032150269,43349.0,723,2025-10-22 03:03:13.528766,,,,,,,,,
+,,,,723,2025-10-22 03:07:16.461288,0.14496088027954102,0.0026794930454343557,0.14496088027954102,0.13351570069789886,0.0015591464471071959,0.13351570069789886,,,
+,,,,723,2025-10-22 03:08:05.994946,,,,,,,0.14171065390110016,0.001928524812683463,0.14171065390110016
+0.1343846321105957,0.000918309495318681,0.1343846321105957,43399.0,724,2025-10-22 03:11:06.720241,,,,,,,,,
+,,,,724,2025-10-22 03:16:33.111453,0.1381267011165619,0.0018326484132558107,0.1381267011165619,0.14182350039482117,0.001653545186854899,0.14182350039482117,,,
+,,,,724,2025-10-22 03:16:59.942213,,,,,,,0.14086246490478516,0.002034664386883378,0.14086246490478516
+0.15951506793498993,0.004098325967788696,0.15951506793498993,43449.0,725,2025-10-22 03:18:48.944438,,,,,,,,,
+0.15958353877067566,0.003613798413425684,0.15958353877067566,43499.0,725,2025-10-22 03:23:36.433134,,,,,,,,,
+,,,,725,2025-10-22 03:25:11.278639,0.1450878530740738,0.0020163857843726873,0.1450878530740738,0.13989008963108063,0.0019628682639449835,0.13989008963108063,,,
+,,,,725,2025-10-22 03:25:38.162774,,,,,,,0.14076732099056244,0.0023890782613307238,0.14076732099056244
+0.1596703827381134,0.001594635541550815,0.1596703827381134,43549.0,726,2025-10-22 03:31:18.353318,,,,,,,,,
+,,,,726,2025-10-22 03:33:35.431205,0.13368956744670868,0.0012054223334416747,0.13368956744670868,0.14048662781715393,0.0025080014020204544,0.14048662781715393,,,
+,,,,726,2025-10-22 03:34:02.029506,,,,,,,0.14447560906410217,0.0022562453523278236,0.14447560906410217
+0.12857182323932648,0.0012870174832642078,0.12857182323932648,43599.0,727,2025-10-22 03:38:46.061641,,,,,,,,,
+,,,,727,2025-10-22 03:42:16.586113,0.14944607019424438,0.0028283284045755863,0.14944607019424438,0.14407294988632202,0.003107289085164666,0.14407294988632202,,,
+,,,,727,2025-10-22 03:42:43.448723,,,,,,,0.13990849256515503,0.0020366625394672155,0.13990849256515503
+0.12465234100818634,0.0008434734772890806,0.12465234100818634,43649.0,728,2025-10-22 03:46:44.156995,,,,,,,,,
+,,,,728,2025-10-22 03:50:58.279293,0.14494706690311432,0.002746328478679061,0.14494706690311432,0.1401488035917282,0.0017284060595557094,0.1401488035917282,,,
+,,,,728,2025-10-22 03:51:24.287504,,,,,,,0.14283797144889832,0.0022243524435907602,0.14283797144889832
+0.16225211322307587,0.0017614137614145875,0.16225211322307587,43699.0,729,2025-10-22 03:54:21.433928,,,,,,,,,
+,,,,729,2025-10-22 03:59:56.246564,0.14864633977413177,0.002302548848092556,0.14864633977413177,0.15287204086780548,0.0029548415914177895,0.15287204086780548,,,
+,,,,729,2025-10-22 04:00:23.372307,,,,,,,0.14118365943431854,0.0021180841140449047,0.14118365943431854
+0.17992375791072845,0.0058929226361215115,0.17992375791072845,43749.0,730,2025-10-22 04:02:18.339635,,,,,,,,,
+0.13780736923217773,0.001090862788259983,0.13780736923217773,43799.0,730,2025-10-22 04:07:12.462783,,,,,,,,,
+,,,,730,2025-10-22 04:08:48.473212,0.14014340937137604,0.0018573242705315351,0.14014340937137604,0.1380116492509842,0.0015534803969785571,0.1380116492509842,,,
+,,,,730,2025-10-22 04:09:15.185338,,,,,,,0.14043594896793365,0.0024317437782883644,0.14043594896793365
+0.1361542046070099,0.0012810099869966507,0.1361542046070099,43849.0,731,2025-10-22 04:14:54.358440,,,,,,,,,
+,,,,731,2025-10-22 04:17:10.265976,0.1413830816745758,0.001535677583888173,0.1413830816745758,0.14720456302165985,0.0016300772549584508,0.14720456302165985,,,
+,,,,731,2025-10-22 04:17:37.262911,,,,,,,0.14284993708133698,0.0019369940273463726,0.14284993708133698
+0.1452760100364685,0.001495574600994587,0.1452760100364685,43899.0,732,2025-10-22 04:22:23.966915,,,,,,,,,
+,,,,732,2025-10-22 04:25:35.719190,0.15633448958396912,0.00306094903498888,0.15633448958396912,0.1467583030462265,0.0019253544742241502,0.1467583030462265,,,
+,,,,732,2025-10-22 04:26:02.975118,,,,,,,0.14079192280769348,0.0020726898219436407,0.14079192280769348
+0.1392802596092224,0.0009992531267926097,0.1392802596092224,43949.0,733,2025-10-22 04:29:49.208267,,,,,,,,,
+,,,,733,2025-10-22 04:34:08.548070,0.14990465342998505,0.0020234892144799232,0.14990465342998505,0.14968593418598175,0.0030723584350198507,0.14968593418598175,,,
+,,,,733,2025-10-22 04:34:36.251855,,,,,,,0.13859908282756805,0.0019136612536385655,0.13859908282756805
+0.15543456375598907,0.00099393620621413,0.15543456375598907,43999.0,734,2025-10-22 04:37:32.206163,,,,,,,,,
+,,,,734,2025-10-22 04:42:32.816646,0.1590031385421753,0.002581975655630231,0.1590031385421753,0.1486826390028,0.0021722898818552494,0.1486826390028,,,
+,,,,734,2025-10-22 04:43:00.357682,,,,,,,0.14148613810539246,0.002440930576995015,0.14148613810539246
+0.17556308209896088,0.00391068309545517,0.17556308209896088,44049.0,735,2025-10-22 04:44:45.578947,,,,,,,,,
+0.11586982011795044,0.0009633047156967223,0.11586982011795044,44099.0,735,2025-10-22 04:49:30.214629,,,,,,,,,
+,,,,735,2025-10-22 04:51:07.934323,0.15036578476428986,0.0018414593068882823,0.15036578476428986,0.14297835528850555,0.002286908682435751,0.14297835528850555,,,
+,,,,735,2025-10-22 04:51:37.191061,,,,,,,0.14055639505386353,0.0024822819977998734,0.14055639505386353
+0.11073519289493561,0.0012469099601730704,0.11073519289493561,44149.0,736,2025-10-22 04:57:14.290220,,,,,,,,,
+,,,,736,2025-10-22 04:59:26.705041,0.1500520557165146,0.002327368361875415,0.1500520557165146,0.14614330232143402,0.0024826277513056993,0.14614330232143402,,,
+,,,,736,2025-10-22 04:59:52.675567,,,,,,,0.14070075750350952,0.0020419908687472343,0.14070075750350952
+0.1339585930109024,0.0021567291114479303,0.1339585930109024,44199.0,737,2025-10-22 05:04:47.113543,,,,,,,,,
+,,,,737,2025-10-22 05:08:02.005817,0.15266670286655426,0.0023693814873695374,0.15266670286655426,0.15236647427082062,0.0026588442269712687,0.15236647427082062,,,
+,,,,737,2025-10-22 05:08:28.932635,,,,,,,0.13732421398162842,0.0020637251436710358,0.13732421398162842
+0.15835309028625488,0.002971680834889412,0.15835309028625488,44249.0,738,2025-10-22 05:12:22.838539,,,,,,,,,
+,,,,738,2025-10-22 05:16:32.251672,0.14889848232269287,0.001176975085400045,0.14889848232269287,0.1373547464609146,0.001838738564401865,0.1373547464609146,,,
+,,,,738,2025-10-22 05:17:00.014737,,,,,,,0.1432611048221588,0.002174164168536663,0.1432611048221588
+0.1331082284450531,0.0011452448088675737,0.1331082284450531,44299.0,739,2025-10-22 05:20:04.800155,,,,,,,,,
+,,,,739,2025-10-22 05:25:17.856968,0.14225833117961884,0.0013174935011193156,0.14225833117961884,0.1483575999736786,0.0026724031195044518,0.1483575999736786,,,
+,,,,739,2025-10-22 05:25:45.128884,,,,,,,0.1415940225124359,0.0019678189419209957,0.1415940225124359
+0.15820500254631042,0.001137983170337975,0.15820500254631042,44349.0,740,2025-10-22 05:27:30.512570,,,,,,,,,
+0.1461438685655594,0.0011937252711504698,0.1461438685655594,44399.0,740,2025-10-22 05:32:09.806012,,,,,,,,,
+,,,,740,2025-10-22 05:33:47.239389,0.15148907899856567,0.002260298701003194,0.15148907899856567,0.13768884539604187,0.0011211102828383446,0.13768884539604187,,,
+,,,,740,2025-10-22 05:34:13.939075,,,,,,,0.1434832662343979,0.0023233394604176283,0.1434832662343979
+0.12291768193244934,0.0022425265051424503,0.12291768193244934,44449.0,741,2025-10-22 05:40:05.711784,,,,,,,,,
+,,,,741,2025-10-22 05:42:21.639139,0.15023256838321686,0.0017695161513984203,0.15023256838321686,0.13677920401096344,0.0017641017911955714,0.13677920401096344,,,
+,,,,741,2025-10-22 05:42:48.685530,,,,,,,0.14067882299423218,0.002007223665714264,0.14067882299423218
+0.1392054408788681,0.0011245461646467447,0.1392054408788681,44499.0,742,2025-10-22 05:47:34.705357,,,,,,,,,
+,,,,742,2025-10-22 05:50:44.713566,0.1453389972448349,0.002213208470493555,0.1453389972448349,0.1465744972229004,0.0015780585817992687,0.1465744972229004,,,
+,,,,742,2025-10-22 05:51:10.517613,,,,,,,0.14174547791481018,0.002258492400869727,0.14174547791481018
+0.13188105821609497,0.0008371341391466558,0.13188105821609497,44549.0,743,2025-10-22 05:54:57.041055,,,,,,,,,
+,,,,743,2025-10-22 05:59:28.202329,0.15193748474121094,0.0023256482090801,0.15193748474121094,0.1444554328918457,0.002093416638672352,0.1444554328918457,,,
+,,,,743,2025-10-22 05:59:54.758005,,,,,,,0.14378765225410461,0.0020351128187030554,0.14378765225410461
+0.17144528031349182,0.001911632250994444,0.17144528031349182,44599.0,744,2025-10-22 06:02:34.486066,,,,,,,,,
+,,,,744,2025-10-22 06:08:04.498287,0.1471112072467804,0.0029308272060006857,0.1471112072467804,0.14735156297683716,0.0022337818518280983,0.14735156297683716,,,
+,,,,744,2025-10-22 06:08:30.262022,,,,,,,0.14178764820098877,0.001777248689904809,0.14178764820098877
+0.15871457755565643,0.002791524166241288,0.15871457755565643,44649.0,745,2025-10-22 06:10:28.149444,,,,,,,,,
+0.14017736911773682,0.001018476439639926,0.14017736911773682,44699.0,745,2025-10-22 06:15:24.985014,,,,,,,,,
+,,,,745,2025-10-22 06:17:04.728564,0.15476450324058533,0.0023984138388186693,0.15476450324058533,0.1497274786233902,0.002567053772509098,0.1497274786233902,,,
+,,,,745,2025-10-22 06:17:32.200855,,,,,,,0.14100217819213867,0.0023674231488257647,0.14100217819213867
+0.13908658921718597,0.0011671505635604262,0.13908658921718597,44749.0,746,2025-10-22 06:23:12.609665,,,,,,,,,
+,,,,746,2025-10-22 06:25:25.524721,0.14999185502529144,0.0041770897805690765,0.14999185502529144,0.14411552250385284,0.0017766120145097375,0.14411552250385284,,,
+,,,,746,2025-10-22 06:25:52.557833,,,,,,,0.13814109563827515,0.0021491593215614557,0.13814109563827515
+0.16280518472194672,0.001365188043564558,0.16280518472194672,44799.0,747,2025-10-22 06:30:39.111151,,,,,,,,,
+,,,,747,2025-10-22 06:33:42.271726,0.14489348232746124,0.002158229472115636,0.14489348232746124,0.15199832618236542,0.002069528214633465,0.15199832618236542,,,
+,,,,747,2025-10-22 06:34:09.391898,,,,,,,0.1442490518093109,0.002108324086293578,0.1442490518093109
+0.16037407517433167,0.0016273093642666936,0.16037407517433167,44849.0,748,2025-10-22 06:38:10.231554,,,,,,,,,
+,,,,748,2025-10-22 06:42:21.425929,0.13887684047222137,0.0028387587517499924,0.13887684047222137,0.15235918760299683,0.003035289701074362,0.15235918760299683,,,
+,,,,748,2025-10-22 06:42:49.507617,,,,,,,0.13927313685417175,0.0018344807904213667,0.13927313685417175
+0.13720382750034332,0.000997270573861897,0.13720382750034332,44899.0,749,2025-10-22 06:45:33.106786,,,,,,,,,
+,,,,749,2025-10-22 06:50:42.458782,0.1370813399553299,0.0015927636995911598,0.1370813399553299,0.14425529539585114,0.0019091189606115222,0.14425529539585114,,,
+,,,,749,2025-10-22 06:51:10.825190,,,,,,,0.1423969566822052,0.002134472131729126,0.1423969566822052
+0.12334463000297546,0.0008861612877808511,0.12334463000297546,44949.0,750,2025-10-22 06:53:05.505245,,,,,,,,,
+0.12260016053915024,0.001555863069370389,0.12260016053915024,44999.0,750,2025-10-22 06:57:36.467864,,,,,,,,,
+,,,,750,2025-10-22 06:59:13.314416,0.1475057154893875,0.0021324462722986937,0.1475057154893875,0.145307719707489,0.0019353441894054413,0.145307719707489,,,
+,,,,750,2025-10-22 06:59:40.435150,,,,,,,0.14152713119983673,0.0021847716998308897,0.14152713119983673
+0.13746125996112823,0.0018224501982331276,0.13746125996112823,45049.0,751,2025-10-22 07:05:24.549334,,,,,,,,,
+,,,,751,2025-10-22 07:07:36.777548,0.13797590136528015,0.002013827208429575,0.13797590136528015,0.14800776541233063,0.0021181930787861347,0.14800776541233063,,,
+,,,,751,2025-10-22 07:08:03.547267,,,,,,,0.1381954550743103,0.0021388160530477762,0.1381954550743103
+0.13725990056991577,0.001103467890061438,0.13725990056991577,45099.0,752,2025-10-22 07:12:49.413198,,,,,,,,,
+,,,,752,2025-10-22 07:16:03.054264,0.15686927735805511,0.0027921951841562986,0.15686927735805511,0.13646849989891052,0.002087767468765378,0.13646849989891052,,,
+,,,,752,2025-10-22 07:16:29.454475,,,,,,,0.1408451348543167,0.001978123327717185,0.1408451348543167
+0.1706794798374176,0.002462220611050725,0.1706794798374176,45149.0,753,2025-10-22 07:20:39.947257,,,,,,,,,
+,,,,753,2025-10-22 07:24:44.653033,0.14564308524131775,0.001193470205180347,0.14564308524131775,0.15993675589561462,0.0035574825014919043,0.15993675589561462,,,
+,,,,753,2025-10-22 07:25:12.624910,,,,,,,0.14140605926513672,0.0019185437122359872,0.14140605926513672
+0.15438461303710938,0.004346906207501888,0.15438461303710938,45199.0,754,2025-10-22 07:27:58.441180,,,,,,,,,
+,,,,754,2025-10-22 07:33:10.583052,0.13969406485557556,0.001771567272953689,0.13969406485557556,0.14993983507156372,0.0030325099360197783,0.14993983507156372,,,
+,,,,754,2025-10-22 07:33:37.827977,,,,,,,0.14472809433937073,0.0024083431344479322,0.14472809433937073
+0.14704027771949768,0.00367221562191844,0.14704027771949768,45249.0,755,2025-10-22 07:35:35.746852,,,,,,,,,
+0.1475648134946823,0.0007947090198285878,0.1475648134946823,45299.0,755,2025-10-22 07:40:34.180445,,,,,,,,,
+,,,,755,2025-10-22 07:42:08.428250,0.14543592929840088,0.0016247747698798776,0.14543592929840088,0.14844423532485962,0.001818017684854567,0.14844423532485962,,,
+,,,,755,2025-10-22 07:42:35.399683,,,,,,,0.14279943704605103,0.0021024697925895452,0.14279943704605103
+0.16514010727405548,0.006656107492744923,0.16514010727405548,45349.0,756,2025-10-22 07:48:32.814948,,,,,,,,,
+,,,,756,2025-10-22 07:50:49.873615,0.1514444798231125,0.0026637925766408443,0.1514444798231125,0.14585089683532715,0.001703119371086359,0.14585089683532715,,,
+,,,,756,2025-10-22 07:51:17.191022,,,,,,,0.14160744845867157,0.0019965788815170527,0.14160744845867157
+0.15532322227954865,0.001637450885027647,0.15532322227954865,45399.0,757,2025-10-22 07:55:54.319028,,,,,,,,,
+,,,,757,2025-10-22 07:59:20.371790,0.1459539234638214,0.002251560566946864,0.1459539234638214,0.1415112018585205,0.0016358657740056515,0.1415112018585205,,,
+,,,,757,2025-10-22 07:59:46.617858,,,,,,,0.14234097301959991,0.002131132176145911,0.14234097301959991
+0.13156169652938843,0.001250687288120389,0.13156169652938843,45449.0,758,2025-10-22 08:04:23.456538,,,,,,,,,
+,,,,758,2025-10-22 08:08:42.501376,0.1466626673936844,0.002820186549797654,0.1466626673936844,0.14028963446617126,0.0025098891928792,0.14028963446617126,,,
+,,,,758,2025-10-22 08:09:10.600929,,,,,,,0.1391795575618744,0.002512172097340226,0.1391795575618744
+0.13083423674106598,0.0025309596676379442,0.13083423674106598,45499.0,759,2025-10-22 08:12:11.749180,,,,,,,,,
+,,,,759,2025-10-22 08:17:27.617858,0.14113624393939972,0.0016638797242194414,0.14113624393939972,0.1441846787929535,0.00201725703664124,0.1441846787929535,,,
+,,,,759,2025-10-22 08:17:53.738585,,,,,,,0.14233803749084473,0.0021477765403687954,0.14233803749084473
+0.14290355145931244,0.005319830030202866,0.14290355145931244,45549.0,760,2025-10-22 08:19:50.886729,,,,,,,,,
+0.15236406028270721,0.0058035580441355705,0.15236406028270721,45599.0,760,2025-10-22 08:24:29.655948,,,,,,,,,
+,,,,760,2025-10-22 08:26:14.835569,0.13963143527507782,0.0022250162437558174,0.13963143527507782,0.14680185914039612,0.0018207645043730736,0.14680185914039612,,,
+,,,,760,2025-10-22 08:26:42.134864,,,,,,,0.14043959975242615,0.002384925726801157,0.14043959975242615
+0.14398829638957977,0.0010273362277075648,0.14398829638957977,45649.0,761,2025-10-22 08:32:21.446610,,,,,,,,,
+,,,,761,2025-10-22 08:34:42.724112,0.14789265394210815,0.0021720940712839365,0.14789265394210815,0.14954400062561035,0.00225347769446671,0.14954400062561035,,,
+,,,,761,2025-10-22 08:35:08.855587,,,,,,,0.14336037635803223,0.0022333054803311825,0.14336037635803223
+0.1267533153295517,0.0039796121418476105,0.1267533153295517,45699.0,762,2025-10-22 08:40:10.755809,,,,,,,,,
+,,,,762,2025-10-22 08:43:35.528736,0.1345861256122589,0.0011765685630962253,0.1345861256122589,0.15436473488807678,0.0023490970488637686,0.15436473488807678,,,
+,,,,762,2025-10-22 08:44:03.045439,,,,,,,0.14176298677921295,0.0019727961625903845,0.14176298677921295
+0.1426675170660019,0.0024132307153195143,0.1426675170660019,45749.0,763,2025-10-22 08:47:55.944690,,,,,,,,,
+,,,,763,2025-10-22 08:52:08.790004,0.14048393070697784,0.0029966572765260935,0.14048393070697784,0.1392974853515625,0.001141902874223888,0.1392974853515625,,,
+,,,,763,2025-10-22 08:52:36.254192,,,,,,,0.13774850964546204,0.002318992745131254,0.13774850964546204
+0.14650382101535797,0.0030833662021905184,0.14650382101535797,45799.0,764,2025-10-22 08:55:38.138048,,,,,,,,,
+,,,,764,2025-10-22 09:00:58.862642,0.15535126626491547,0.0027274482417851686,0.15535126626491547,0.15294146537780762,0.002631132025271654,0.15294146537780762,,,
+,,,,764,2025-10-22 09:01:24.477599,,,,,,,0.14169001579284668,0.00236918474547565,0.14169001579284668
+0.14204205572605133,0.0015674455789849162,0.14204205572605133,45849.0,765,2025-10-22 09:03:18.226326,,,,,,,,,
+0.1353970170021057,0.001709826523438096,0.1353970170021057,45899.0,765,2025-10-22 09:07:53.117345,,,,,,,,,
+,,,,765,2025-10-22 09:09:22.147682,0.1463145762681961,0.0019818569999188185,0.1463145762681961,0.1526573896408081,0.0033103562891483307,0.1526573896408081,,,
+,,,,765,2025-10-22 09:09:48.677845,,,,,,,0.14098550379276276,0.0021779322996735573,0.14098550379276276
+0.13546587526798248,0.0013219948159530759,0.13546587526798248,45949.0,766,2025-10-22 09:15:38.198860,,,,,,,,,
+,,,,766,2025-10-22 09:18:03.030581,0.1464989185333252,0.002195735927671194,0.1464989185333252,0.15854915976524353,0.0030478022526949644,0.15854915976524353,,,
+,,,,766,2025-10-22 09:18:28.757210,,,,,,,0.1409384161233902,0.002151953522115946,0.1409384161233902
+0.1233801543712616,0.001216763281263411,0.1233801543712616,45999.0,767,2025-10-22 09:23:18.811121,,,,,,,,,
+,,,,767,2025-10-22 09:26:31.584987,0.15420638024806976,0.003645758843049407,0.15420638024806976,0.14543242752552032,0.002127696992829442,0.14543242752552032,,,
+,,,,767,2025-10-22 09:26:56.714028,,,,,,,0.13864637911319733,0.0019192947074770927,0.13864637911319733
+0.17034998536109924,0.007018178701400757,0.17034998536109924,46049.0,768,2025-10-22 09:31:02.574851,,,,,,,,,
+,,,,768,2025-10-22 09:35:23.379002,0.1415109634399414,0.0015450511127710342,0.1415109634399414,0.1424012929201126,0.0023566819727420807,0.1424012929201126,,,
+,,,,768,2025-10-22 09:35:49.059444,,,,,,,0.14203780889511108,0.0024524072650820017,0.14203780889511108
+0.11836259812116623,0.0014498530654236674,0.11836259812116623,46099.0,769,2025-10-22 09:38:49.778897,,,,,,,,,
+,,,,769,2025-10-22 09:44:09.641075,0.14334262907505035,0.0013125931145623326,0.14334262907505035,0.14326083660125732,0.0015792177291586995,0.14326083660125732,,,
+,,,,769,2025-10-22 09:44:35.957095,,,,,,,0.1448323279619217,0.0023253539111465216,0.1448323279619217
+0.14138177037239075,0.0008370210416615009,0.14138177037239075,46149.0,770,2025-10-22 09:46:36.404924,,,,,,,,,
+0.1484244018793106,0.0010576463537290692,0.1484244018793106,46199.0,770,2025-10-22 09:51:09.010113,,,,,,,,,
+,,,,770,2025-10-22 09:52:46.724833,0.15371155738830566,0.0016879504546523094,0.15371155738830566,0.14719398319721222,0.003703521331772208,0.14719398319721222,,,
+,,,,770,2025-10-22 09:53:12.834743,,,,,,,0.1410336196422577,0.0022894120775163174,0.1410336196422577
+0.14844627678394318,0.0014235866256058216,0.14844627678394318,46249.0,771,2025-10-22 09:59:13.341483,,,,,,,,,
+,,,,771,2025-10-22 10:01:41.240941,0.1607600748538971,0.0021126524079591036,0.1607600748538971,0.1551101952791214,0.0017403261736035347,0.1551101952791214,,,
+,,,,771,2025-10-22 10:02:07.309037,,,,,,,0.14169123768806458,0.0020827590487897396,0.14169123768806458
+0.1277420073747635,0.002398071577772498,0.1277420073747635,46299.0,772,2025-10-22 10:07:00.013017,,,,,,,,,
+,,,,772,2025-10-22 10:10:14.235629,0.13324084877967834,0.0010314403334632516,0.13324084877967834,0.14696156978607178,0.002066297922283411,0.14696156978607178,,,
+,,,,772,2025-10-22 10:10:41.308741,,,,,,,0.14277349412441254,0.0023446427658200264,0.14277349412441254
+0.12058775871992111,0.0007356941350735724,0.12058775871992111,46349.0,773,2025-10-22 10:14:34.707252,,,,,,,,,
+,,,,773,2025-10-22 10:18:53.362502,0.13457323610782623,0.0018386389128863811,0.13457323610782623,0.14647136628627777,0.0035864722449332476,0.14647136628627777,,,
+,,,,773,2025-10-22 10:19:20.194737,,,,,,,0.13938529789447784,0.0022742238361388445,0.13938529789447784
+0.1607503890991211,0.0015417125541716814,0.1607503890991211,46399.0,774,2025-10-22 10:22:14.623523,,,,,,,,,
+,,,,774,2025-10-22 10:27:44.956144,0.14911764860153198,0.0024147150106728077,0.14911764860153198,0.15098793804645538,0.003357077483087778,0.15098793804645538,,,
+,,,,774,2025-10-22 10:28:11.512437,,,,,,,0.14097195863723755,0.0020581616554409266,0.14097195863723755
+0.13597558438777924,0.0010987682035192847,0.13597558438777924,46449.0,775,2025-10-22 10:29:56.335539,,,,,,,,,
+0.14576628804206848,0.0011855729389935732,0.14576628804206848,46499.0,775,2025-10-22 10:34:38.187082,,,,,,,,,
+,,,,775,2025-10-22 10:36:13.252068,0.13951537013053894,0.0020107319578528404,0.13951537013053894,0.14310620725154877,0.0016782190650701523,0.14310620725154877,,,
+,,,,775,2025-10-22 10:36:39.262233,,,,,,,0.1376628875732422,0.0021931221708655357,0.1376628875732422
+0.17220114171504974,0.0043374765664339066,0.17220114171504974,46549.0,776,2025-10-22 10:42:22.048923,,,,,,,,,
+,,,,776,2025-10-22 10:45:09.900810,0.1366083174943924,0.0011178483255207539,0.1366083174943924,0.14960764348506927,0.0020467338617891073,0.14960764348506927,,,
+,,,,776,2025-10-22 10:45:35.557844,,,,,,,0.13968996703624725,0.0020681251771748066,0.13968996703624725
+0.14511407911777496,0.0015168068930506706,0.14511407911777496,46599.0,777,2025-10-22 10:50:34.540621,,,,,,,,,
+,,,,777,2025-10-22 10:53:38.936265,0.1459643840789795,0.0016086226096376777,0.1459643840789795,0.14320108294487,0.0030921378638595343,0.14320108294487,,,
+,,,,777,2025-10-22 10:54:06.060703,,,,,,,0.1409144103527069,0.0024325272534042597,0.1409144103527069
+0.13769157230854034,0.0011807797709479928,0.13769157230854034,46649.0,778,2025-10-22 10:57:53.092916,,,,,,,,,
+,,,,778,2025-10-22 11:02:15.667136,0.1450396329164505,0.002370750531554222,0.1450396329164505,0.1463010311126709,0.0022484303917735815,0.1463010311126709,,,
+,,,,778,2025-10-22 11:02:43.024539,,,,,,,0.14028018712997437,0.0022638249211013317,0.14028018712997437
+0.15474776923656464,0.0010545941768214107,0.15474776923656464,46699.0,779,2025-10-22 11:05:31.305221,,,,,,,,,
+,,,,779,2025-10-22 11:10:34.701098,0.14536894857883453,0.0014148745685815811,0.14536894857883453,0.14383246004581451,0.0018912507221102715,0.14383246004581451,,,
+,,,,779,2025-10-22 11:11:01.131213,,,,,,,0.14542047679424286,0.0022747127804905176,0.14542047679424286
+0.12897270917892456,0.001097300322726369,0.12897270917892456,46749.0,780,2025-10-22 11:12:48.654365,,,,,,,,,
+0.1478893756866455,0.004198907874524593,0.1478893756866455,46799.0,780,2025-10-22 11:17:49.923651,,,,,,,,,
+,,,,780,2025-10-22 11:19:25.298418,0.14434564113616943,0.002447589300572872,0.14434564113616943,0.1465497761964798,0.0020898557268083096,0.1465497761964798,,,
+,,,,780,2025-10-22 11:19:50.904913,,,,,,,0.14187349379062653,0.002414484042674303,0.14187349379062653
+0.13462913036346436,0.0011546543100848794,0.13462913036346436,46849.0,781,2025-10-22 11:25:38.529574,,,,,,,,,
+,,,,781,2025-10-22 11:27:53.553926,0.16231635212898254,0.003665287746116519,0.16231635212898254,0.14035962522029877,0.0018939623842015862,0.14035962522029877,,,
+,,,,781,2025-10-22 11:28:19.166622,,,,,,,0.1454562544822693,0.002535638865083456,0.1454562544822693
+0.12885025143623352,0.0008214910631068051,0.12885025143623352,46899.0,782,2025-10-22 11:32:56.801507,,,,,,,,,
+,,,,782,2025-10-22 11:36:15.140115,0.15501293540000916,0.0023594333324581385,0.15501293540000916,0.14813558757305145,0.0023722597397863865,0.14813558757305145,,,
+,,,,782,2025-10-22 11:36:41.429618,,,,,,,0.14238663017749786,0.002155869035050273,0.14238663017749786
+0.13308297097682953,0.0011919228127226233,0.13308297097682953,46949.0,783,2025-10-22 11:40:47.404643,,,,,,,,,
+,,,,783,2025-10-22 11:45:18.467212,0.1468399465084076,0.0036938367411494255,0.1468399465084076,0.13760308921337128,0.0012643616646528244,0.13760308921337128,,,
+,,,,783,2025-10-22 11:45:44.135645,,,,,,,0.14049144089221954,0.0018748434958979487,0.14049144089221954
+0.1420544534921646,0.001708664116449654,0.1420544534921646,46999.0,784,2025-10-22 11:48:30.779259,,,,,,,,,
+,,,,784,2025-10-22 11:53:52.427503,0.12800809741020203,0.0012361472472548485,0.12800809741020203,0.137033611536026,0.0017186037730425596,0.137033611536026,,,
+,,,,784,2025-10-22 11:54:19.670295,,,,,,,0.14460231363773346,0.002324312226846814,0.14460231363773346
+0.1167658343911171,0.0017890078015625477,0.1167658343911171,47049.0,785,2025-10-22 11:56:07.240370,,,,,,,,,
+0.14553822576999664,0.0019263083813712,0.14553822576999664,47099.0,785,2025-10-22 12:01:00.212780,,,,,,,,,
+,,,,785,2025-10-22 12:02:35.738054,0.14214399456977844,0.0025785164907574654,0.14214399456977844,0.14312396943569183,0.001617257366888225,0.14312396943569183,,,
+,,,,785,2025-10-22 12:03:03.654779,,,,,,,0.140254944562912,0.002476820722222328,0.140254944562912
+0.1374124437570572,0.002893748925998807,0.1374124437570572,47149.0,786,2025-10-22 12:08:38.257112,,,,,,,,,
+,,,,786,2025-10-22 12:11:10.688959,0.14756636321544647,0.0028593142051249743,0.14756636321544647,0.15240618586540222,0.001681857043877244,0.15240618586540222,,,
+,,,,786,2025-10-22 12:11:37.086678,,,,,,,0.14229393005371094,0.0022691371850669384,0.14229393005371094
+0.13967306911945343,0.002599982777610421,0.13967306911945343,47199.0,787,2025-10-22 12:16:32.462523,,,,,,,,,
+,,,,787,2025-10-22 12:19:44.006801,0.15750716626644135,0.0027808896265923977,0.15750716626644135,0.13363315165042877,0.0013479910558089614,0.13363315165042877,,,
+,,,,787,2025-10-22 12:20:34.195735,,,,,,,0.1409691572189331,0.0023420085199177265,0.1409691572189331
+0.13059526681900024,0.0012529270024970174,0.13059526681900024,47249.0,788,2025-10-22 12:24:37.280859,,,,,,,,,
+,,,,788,2025-10-22 12:28:51.254221,0.13430263102054596,0.002069581998512149,0.13430263102054596,0.1468791663646698,0.0024269260466098785,0.1468791663646698,,,
+,,,,788,2025-10-22 12:29:17.493290,,,,,,,0.1434481292963028,0.002062893006950617,0.1434481292963028
+0.1310625672340393,0.0007812752155587077,0.1310625672340393,47299.0,789,2025-10-22 12:32:15.277467,,,,,,,,,
+,,,,789,2025-10-22 12:37:29.077280,0.1431933343410492,0.0034742734860628843,0.1431933343410492,0.1492767333984375,0.0028643482364714146,0.1492767333984375,,,
+,,,,789,2025-10-22 12:37:56.122254,,,,,,,0.14244544506072998,0.0021723564714193344,0.14244544506072998
+0.14250217378139496,0.002208802616223693,0.14250217378139496,47349.0,790,2025-10-22 12:39:49.668025,,,,,,,,,
+0.1325315535068512,0.00121026870328933,0.1325315535068512,47399.0,790,2025-10-22 12:44:26.950677,,,,,,,,,
+,,,,790,2025-10-22 12:46:02.891910,0.14109422266483307,0.0014765672385692596,0.14109422266483307,0.13516411185264587,0.0014789095148444176,0.13516411185264587,,,
+,,,,790,2025-10-22 12:46:29.473743,,,,,,,0.1393047571182251,0.0020596813410520554,0.1393047571182251
+0.12581390142440796,0.0043510552495718,0.12581390142440796,47449.0,791,2025-10-22 12:52:13.240338,,,,,,,,,
+,,,,791,2025-10-22 12:54:29.587821,0.13741998374462128,0.0012364824069663882,0.13741998374462128,0.14005665481090546,0.002330835210159421,0.14005665481090546,,,
+,,,,791,2025-10-22 12:54:55.331932,,,,,,,0.13786259293556213,0.0020639696158468723,0.13786259293556213
+0.12094610184431076,0.0015478531131520867,0.12094610184431076,47499.0,792,2025-10-22 12:59:55.597415,,,,,,,,,
+,,,,792,2025-10-22 13:03:14.232678,0.14159785211086273,0.0024148866068571806,0.14159785211086273,0.14718028903007507,0.0021791758481413126,0.14718028903007507,,,
+,,,,792,2025-10-22 13:03:39.123124,,,,,,,0.14394709467887878,0.002182567957788706,0.14394709467887878
+0.15051190555095673,0.0025458489544689655,0.15051190555095673,47549.0,793,2025-10-22 13:07:20.285666,,,,,,,,,
+,,,,793,2025-10-22 13:11:45.703668,0.14757341146469116,0.0017657019197940826,0.14757341146469116,0.14929428696632385,0.002163822529837489,0.14929428696632385,,,
+,,,,793,2025-10-22 13:12:12.906794,,,,,,,0.13975320756435394,0.0021941703744232655,0.13975320756435394
+0.15177597105503082,0.0030192448757588863,0.15177597105503082,47599.0,794,2025-10-22 13:15:02.126240,,,,,,,,,
+,,,,794,2025-10-22 13:20:19.880450,0.15502291917800903,0.003476764541119337,0.15502291917800903,0.15042655169963837,0.002342833438888192,0.15042655169963837,,,
+,,,,794,2025-10-22 13:20:48.868682,,,,,,,0.14132638275623322,0.002268995391204953,0.14132638275623322
+0.12003976851701736,0.001482457504607737,0.12003976851701736,47649.0,795,2025-10-22 13:22:43.284872,,,,,,,,,
+0.1491452008485794,0.0025551437865942717,0.1491452008485794,47699.0,795,2025-10-22 13:27:35.600787,,,,,,,,,
+,,,,795,2025-10-22 13:29:13.706322,0.1575731635093689,0.0036480394192039967,0.1575731635093689,0.14768189191818237,0.0028616401832550764,0.14768189191818237,,,
+,,,,795,2025-10-22 13:29:40.834981,,,,,,,0.14185233414173126,0.002216068562120199,0.14185233414173126
+0.1522355079650879,0.0019068469991907477,0.1522355079650879,47749.0,796,2025-10-22 13:35:40.900373,,,,,,,,,
+,,,,796,2025-10-22 13:37:59.313299,0.1493593454360962,0.0014354567974805832,0.1493593454360962,0.14900518953800201,0.0025861861649900675,0.14900518953800201,,,
+,,,,796,2025-10-22 13:38:25.892570,,,,,,,0.14064303040504456,0.0018271442968398333,0.14064303040504456
+0.13709025084972382,0.004258428234606981,0.13709025084972382,47799.0,797,2025-10-22 13:43:41.657246,,,,,,,,,
+,,,,797,2025-10-22 13:46:45.098502,0.14373475313186646,0.0020087133161723614,0.14373475313186646,0.14218969643115997,0.0016555623151361942,0.14218969643115997,,,
+,,,,797,2025-10-22 13:47:13.179216,,,,,,,0.1367795616388321,0.002381709171459079,0.1367795616388321
+0.09931456297636032,0.003110474208369851,0.09931456297636032,47849.0,798,2025-10-22 13:51:12.287161,,,,,,,,,
+,,,,798,2025-10-22 13:55:33.323858,0.1323523074388504,0.001598554546944797,0.1323523074388504,0.1523778885602951,0.0021619335748255253,0.1523778885602951,,,
+,,,,798,2025-10-22 13:56:01.947904,,,,,,,0.14164882898330688,0.0021493483800441027,0.14164882898330688
+0.14348383247852325,0.0015920159639790654,0.14348383247852325,47899.0,799,2025-10-22 13:58:55.645036,,,,,,,,,
+,,,,799,2025-10-22 14:04:05.485449,0.143633171916008,0.0019417748553678393,0.143633171916008,0.13921472430229187,0.002413871930912137,0.13921472430229187,,,
+,,,,799,2025-10-22 14:04:34.259551,,,,,,,0.1410602629184723,0.0022986503317952156,0.1410602629184723
+0.14424848556518555,0.0016442956402897835,0.14424848556518555,47949.0,800,2025-10-22 14:06:36.879796,,,,,,,,,
+0.17548002302646637,0.0029273356776684523,0.17548002302646637,47999.0,800,2025-10-22 14:11:07.505848,,,,,,,,,
+,,,,800,2025-10-22 14:12:45.375809,0.14595156908035278,0.0038739927113056183,0.14595156908035278,0.14675500988960266,0.0016334913671016693,0.14675500988960266,,,
+,,,,800,2025-10-22 14:13:12.873834,,,,,,,0.1393282115459442,0.0019411812536418438,0.1393282115459442
+0.16128037869930267,0.0015602635685354471,0.16128037869930267,48049.0,801,2025-10-22 14:19:20.188371,,,,,,,,,
+,,,,801,2025-10-22 14:21:39.298034,0.1275385022163391,0.001598929986357689,0.1275385022163391,0.13865986466407776,0.0017604707973077893,0.13865986466407776,,,
+,,,,801,2025-10-22 14:22:07.861719,,,,,,,0.1406109482049942,0.0018851205240935087,0.1406109482049942
+0.13137640058994293,0.0038538733497262,0.13137640058994293,48099.0,802,2025-10-22 14:26:50.586796,,,,,,,,,
+,,,,802,2025-10-22 14:30:00.305581,0.15523704886436462,0.0035095533821731806,0.15523704886436462,0.14472727477550507,0.0018879978451877832,0.14472727477550507,,,
+,,,,802,2025-10-22 14:30:27.190697,,,,,,,0.13958080112934113,0.002209280850365758,0.13958080112934113
+0.1342499554157257,0.00093319290317595,0.1342499554157257,48149.0,803,2025-10-22 14:34:27.946212,,,,,,,,,
+,,,,803,2025-10-22 14:38:39.796709,0.15147079527378082,0.002789318561553955,0.15147079527378082,0.14606210589408875,0.001904824748635292,0.14606210589408875,,,
+,,,,803,2025-10-22 14:39:07.272386,,,,,,,0.14042742550373077,0.0019861001055687666,0.14042742550373077
+0.13286863267421722,0.00472866790369153,0.13286863267421722,48199.0,804,2025-10-22 14:42:08.863288,,,,,,,,,
+,,,,804,2025-10-22 14:47:34.527073,0.138902485370636,0.002529459772631526,0.138902485370636,0.1478353589773178,0.0016318893758580089,0.1478353589773178,,,
+,,,,804,2025-10-22 14:48:03.394341,,,,,,,0.1408969759941101,0.0019168842118233442,0.1408969759941101
+0.16097396612167358,0.004139348864555359,0.16097396612167358,48249.0,805,2025-10-22 14:49:55.708890,,,,,,,,,
+0.16953076422214508,0.004712415859103203,0.16953076422214508,48299.0,805,2025-10-22 14:54:45.540264,,,,,,,,,
+,,,,805,2025-10-22 14:56:24.531980,0.14571282267570496,0.0026654619723558426,0.14571282267570496,0.1536761224269867,0.0030144001357257366,0.1536761224269867,,,
+,,,,805,2025-10-22 14:56:51.522684,,,,,,,0.14317356050014496,0.0023135871160775423,0.14317356050014496
+0.12957927584648132,0.0010285975877195597,0.12957927584648132,48349.0,806,2025-10-22 15:03:08.769148,,,,,,,,,
+,,,,806,2025-10-22 15:05:26.903471,0.13938665390014648,0.0022213503252714872,0.13938665390014648,0.14697487652301788,0.0036009063478559256,0.14697487652301788,,,
+,,,,806,2025-10-22 15:05:54.507630,,,,,,,0.13769115507602692,0.0022467467933893204,0.13769115507602692
+0.1497552990913391,0.0041874670423567295,0.1497552990913391,48399.0,807,2025-10-22 15:10:52.899990,,,,,,,,,
+,,,,807,2025-10-22 15:14:10.699179,0.1436203420162201,0.0027909025084227324,0.1436203420162201,0.1452009081840515,0.0017611737130209804,0.1452009081840515,,,
+,,,,807,2025-10-22 15:14:37.970559,,,,,,,0.13879139721393585,0.002215153770521283,0.13879139721393585
+0.1523972898721695,0.002255941042676568,0.1523972898721695,48449.0,808,2025-10-22 15:18:43.546426,,,,,,,,,
+,,,,808,2025-10-22 15:23:28.241566,0.14392594993114471,0.0023927236907184124,0.14392594993114471,0.14512760937213898,0.0029251165688037872,0.14512760937213898,,,
+,,,,808,2025-10-22 15:23:55.191287,,,,,,,0.13548576831817627,0.0021847274620085955,0.13548576831817627
+0.15913191437721252,0.0019635125063359737,0.15913191437721252,48499.0,809,2025-10-22 15:26:52.719780,,,,,,,,,
+,,,,809,2025-10-22 15:31:59.296247,0.1378219723701477,0.0026821729261428118,0.1378219723701477,0.1446658968925476,0.002546492964029312,0.1446658968925476,,,
+,,,,809,2025-10-22 15:32:27.036400,,,,,,,0.1404954493045807,0.0021843521390110254,0.1404954493045807
+0.1461562067270279,0.0017079781973734498,0.1461562067270279,48549.0,810,2025-10-22 15:34:17.671605,,,,,,,,,
+0.12322696298360825,0.0014321461785584688,0.12322696298360825,48599.0,810,2025-10-22 15:39:25.329813,,,,,,,,,
+,,,,810,2025-10-22 15:40:54.907153,0.15673109889030457,0.00246978597715497,0.15673109889030457,0.1499042958021164,0.0015685305697843432,0.1499042958021164,,,
+,,,,810,2025-10-22 15:41:20.580757,,,,,,,0.14144137501716614,0.002198288217186928,0.14144137501716614
+0.1669551581144333,0.0016320464201271534,0.1669551581144333,48649.0,811,2025-10-22 15:47:27.542523,,,,,,,,,
+,,,,811,2025-10-22 15:49:44.473523,0.15493641793727875,0.0019368964713066816,0.15493641793727875,0.14559298753738403,0.0014350197743624449,0.14559298753738403,,,
+,,,,811,2025-10-22 15:50:12.249280,,,,,,,0.13934502005577087,0.0020229830406606197,0.13934502005577087
+0.14149430394172668,0.001902606338262558,0.14149430394172668,48699.0,812,2025-10-22 15:55:01.988133,,,,,,,,,
+,,,,812,2025-10-22 15:58:28.229735,0.145395427942276,0.0024105196353048086,0.145395427942276,0.14852337539196014,0.0024381927214562893,0.14852337539196014,,,
+,,,,812,2025-10-22 15:58:56.454526,,,,,,,0.13989418745040894,0.00211511948145926,0.13989418745040894
+0.12363198399543762,0.0008129547350108624,0.12363198399543762,48749.0,813,2025-10-22 16:02:54.627516,,,,,,,,,
+,,,,813,2025-10-22 16:07:09.719849,0.13840021193027496,0.0018525508930906653,0.13840021193027496,0.14027364552021027,0.0023372971918433905,0.14027364552021027,,,
+,,,,813,2025-10-22 16:07:37.284599,,,,,,,0.14090409874916077,0.0023581471759825945,0.14090409874916077
+0.12920570373535156,0.0032487872522324324,0.12920570373535156,48799.0,814,2025-10-22 16:10:34.207801,,,,,,,,,
+,,,,814,2025-10-22 16:15:56.286657,0.14610321819782257,0.002091391244903207,0.14610321819782257,0.13808032870292664,0.001577124698087573,0.13808032870292664,,,
+,,,,814,2025-10-22 16:16:23.306350,,,,,,,0.1422622948884964,0.0021528115030378103,0.1422622948884964
+0.13400311768054962,0.0008886033319868147,0.13400311768054962,48849.0,815,2025-10-22 16:18:17.680362,,,,,,,,,
+0.14220072329044342,0.001597133930772543,0.14220072329044342,48899.0,815,2025-10-22 16:22:53.025475,,,,,,,,,
+,,,,815,2025-10-22 16:24:32.081113,0.14787979423999786,0.001795496209524572,0.14787979423999786,0.14907239377498627,0.0025059485342353582,0.14907239377498627,,,
+,,,,815,2025-10-22 16:24:59.344937,,,,,,,0.1395081877708435,0.0020852487068623304,0.1395081877708435
+0.13929709792137146,0.002275331411510706,0.13929709792137146,48949.0,816,2025-10-22 16:30:57.495503,,,,,,,,,
+,,,,816,2025-10-22 16:33:09.932175,0.14701960980892181,0.0029067387804389,0.14701960980892181,0.14375388622283936,0.002312379190698266,0.14375388622283936,,,
+,,,,816,2025-10-22 16:33:35.886891,,,,,,,0.1364727020263672,0.0022239815443754196,0.1364727020263672
+0.12972116470336914,0.0017767050303518772,0.12972116470336914,48999.0,817,2025-10-22 16:38:26.615448,,,,,,,,,
+,,,,817,2025-10-22 16:41:37.318161,0.14958497881889343,0.001753450371325016,0.14958497881889343,0.14094014465808868,0.0018715269397944212,0.14094014465808868,,,
+,,,,817,2025-10-22 16:42:04.154399,,,,,,,0.13839304447174072,0.0022222716361284256,0.13839304447174072
+0.1422586739063263,0.0019261412089690566,0.1422586739063263,49049.0,818,2025-10-22 16:45:59.586166,,,,,,,,,
+,,,,818,2025-10-22 16:50:20.470031,0.14244501292705536,0.0027305670082569122,0.14244501292705536,0.14474444091320038,0.0032618765253573656,0.14474444091320038,,,
+,,,,818,2025-10-22 16:50:46.096249,,,,,,,0.1401827335357666,0.0021578751038759947,0.1401827335357666
+0.1564820557832718,0.0011436662171036005,0.1564820557832718,49099.0,819,2025-10-22 16:53:48.092876,,,,,,,,,
+,,,,819,2025-10-22 16:58:59.810553,0.14049570262432098,0.0017135103698819876,0.14049570262432098,0.1447138637304306,0.0014767471002414823,0.1447138637304306,,,
+,,,,819,2025-10-22 16:59:26.437751,,,,,,,0.13877873122692108,0.0020189720671623945,0.13877873122692108
+0.12247101217508316,0.0017734944121912122,0.12247101217508316,49149.0,820,2025-10-22 17:01:12.821916,,,,,,,,,
+0.14167903363704681,0.001420297659933567,0.14167903363704681,49199.0,820,2025-10-22 17:06:03.745493,,,,,,,,,
+,,,,820,2025-10-22 17:07:47.427217,0.13847030699253082,0.0016120154177770019,0.13847030699253082,0.14474304020404816,0.0018415437079966068,0.14474304020404816,,,
+,,,,820,2025-10-22 17:08:13.603560,,,,,,,0.13982485234737396,0.0018419583793729544,0.13982485234737396
+0.14772821962833405,0.00149996904656291,0.14772821962833405,49249.0,821,2025-10-22 17:13:37.762826,,,,,,,,,
+,,,,821,2025-10-22 17:16:16.238681,0.1494482159614563,0.0026210476644337177,0.1494482159614563,0.14866623282432556,0.0021909349597990513,0.14866623282432556,,,
+,,,,821,2025-10-22 17:16:42.449682,,,,,,,0.14231111109256744,0.0021667745895683765,0.14231111109256744
+0.16780774295330048,0.0042396835051476955,0.16780774295330048,49299.0,822,2025-10-22 17:21:33.184563,,,,,,,,,
+,,,,822,2025-10-22 17:24:45.823566,0.14496542513370514,0.00299150706268847,0.14496542513370514,0.146694615483284,0.0024424290750175714,0.146694615483284,,,
+,,,,822,2025-10-22 17:25:12.352296,,,,,,,0.14039035141468048,0.0019565802067518234,0.14039035141468048
+0.16051380336284637,0.001491115428507328,0.16051380336284637,49349.0,823,2025-10-22 17:28:57.609749,,,,,,,,,
+,,,,823,2025-10-22 17:33:04.914234,0.13600637018680573,0.0019403613405302167,0.13600637018680573,0.1366925984621048,0.0017821085639297962,0.1366925984621048,,,
+,,,,823,2025-10-22 17:33:31.044579,,,,,,,0.1441054493188858,0.002140423748642206,0.1441054493188858
+0.15809892117977142,0.0025723313447088003,0.15809892117977142,49399.0,824,2025-10-22 17:36:32.682846,,,,,,,,,
+,,,,824,2025-10-22 17:41:38.266049,0.1372089385986328,0.002694601658731699,0.1372089385986328,0.15369445085525513,0.003103876719251275,0.15369445085525513,,,
+,,,,824,2025-10-22 17:42:04.829861,,,,,,,0.14319749176502228,0.0024244235828518867,0.14319749176502228
+0.1635015904903412,0.004480417817831039,0.1635015904903412,49449.0,825,2025-10-22 17:43:59.093353,,,,,,,,,
+0.14473427832126617,0.005221948958933353,0.14473427832126617,49499.0,825,2025-10-22 17:48:45.582686,,,,,,,,,
+,,,,825,2025-10-22 17:50:23.198290,0.14933162927627563,0.00220346637070179,0.14933162927627563,0.1528567671775818,0.0022672226186841726,0.1528567671775818,,,
+,,,,825,2025-10-22 17:50:50.833627,,,,,,,0.145036980509758,0.0023468455765396357,0.145036980509758
+0.14763851463794708,0.0011552955256775022,0.14763851463794708,49549.0,826,2025-10-22 17:56:39.176064,,,,,,,,,
+,,,,826,2025-10-22 17:58:49.582915,0.1360897570848465,0.0016652211779728532,0.1360897570848465,0.14713723957538605,0.002259747125208378,0.14713723957538605,,,
+,,,,826,2025-10-22 17:59:17.008793,,,,,,,0.14178258180618286,0.0018473108066245914,0.14178258180618286
+0.14635971188545227,0.0009651024010963738,0.14635971188545227,49599.0,827,2025-10-22 18:04:16.255865,,,,,,,,,
+,,,,827,2025-10-22 18:07:35.401532,0.1463748663663864,0.002281809924170375,0.1463748663663864,0.1436949223279953,0.0019262304995208979,0.1436949223279953,,,
+,,,,827,2025-10-22 18:08:00.916428,,,,,,,0.1432517021894455,0.001987314783036709,0.1432517021894455
+0.14026787877082825,0.0012351666809991002,0.14026787877082825,49649.0,828,2025-10-22 18:12:11.986981,,,,,,,,,
+,,,,828,2025-10-22 18:16:23.720095,0.14911897480487823,0.0024264929816126823,0.14911897480487823,0.1468418687582016,0.0034775950480252504,0.1468418687582016,,,
+,,,,828,2025-10-22 18:16:49.878696,,,,,,,0.14004762470722198,0.0021271230652928352,0.14004762470722198
+0.117879219353199,0.0008913036435842514,0.117879219353199,49699.0,829,2025-10-22 18:19:54.011115,,,,,,,,,
+,,,,829,2025-10-22 18:25:00.445055,0.13934949040412903,0.0019047914538532495,0.13934949040412903,0.14788690209388733,0.0015217886539176106,0.14788690209388733,,,
+,,,,829,2025-10-22 18:25:25.626394,,,,,,,0.13920563459396362,0.0018790967296808958,0.13920563459396362
+0.124205082654953,0.0031700024846941233,0.124205082654953,49749.0,830,2025-10-22 18:27:20.208974,,,,,,,,,
+0.16461700201034546,0.0012227367842569947,0.16461700201034546,49799.0,830,2025-10-22 18:32:06.025928,,,,,,,,,
+,,,,830,2025-10-22 18:33:40.428824,0.147639200091362,0.0020330066327005625,0.147639200091362,0.13921959698200226,0.002079240046441555,0.13921959698200226,,,
+,,,,830,2025-10-22 18:34:04.947233,,,,,,,0.14104613661766052,0.0023591010831296444,0.14104613661766052
+0.16626706719398499,0.0019482756033539772,0.16626706719398499,49849.0,831,2025-10-22 18:39:53.545038,,,,,,,,,
+,,,,831,2025-10-22 18:42:06.318673,0.1440911889076233,0.0015559016028419137,0.1440911889076233,0.14739742875099182,0.0023365155793726444,0.14739742875099182,,,
+,,,,831,2025-10-22 18:42:32.916411,,,,,,,0.1400432586669922,0.001953517086803913,0.1400432586669922
+0.10643547028303146,0.0006898357532918453,0.10643547028303146,49899.0,832,2025-10-22 18:47:30.891065,,,,,,,,,
+,,,,832,2025-10-22 18:50:39.015930,0.1353694647550583,0.0013497938634827733,0.1353694647550583,0.13942061364650726,0.0012858387781307101,0.13942061364650726,,,
+,,,,832,2025-10-22 18:51:04.512534,,,,,,,0.1388610601425171,0.002385975793004036,0.1388610601425171
+0.1397005319595337,0.005977190565317869,0.1397005319595337,49949.0,833,2025-10-22 18:54:55.951209,,,,,,,,,
+,,,,833,2025-10-22 18:59:10.763054,0.1534641832113266,0.0028051063418388367,0.1534641832113266,0.14746251702308655,0.0022884684149175882,0.14746251702308655,,,
+,,,,833,2025-10-22 18:59:38.239010,,,,,,,0.13904385268688202,0.0022852998226881027,0.13904385268688202
+0.14102710783481598,0.0021467695478349924,0.14102710783481598,49999.0,834,2025-10-22 19:02:27.869234,,,,,,,,,
+,,,,834,2025-10-22 19:07:52.189597,0.1376379430294037,0.0019019783940166235,0.1376379430294037,0.14928922057151794,0.0017121972050517797,0.14928922057151794,,,
+,,,,834,2025-10-22 19:08:17.067255,,,,,,,0.14105698466300964,0.0019532344304025173,0.14105698466300964
+0.10610078275203705,0.001195110147818923,0.10610078275203705,50049.0,835,2025-10-22 19:10:06.135493,,,,,,,,,
+0.17101716995239258,0.002239820547401905,0.17101716995239258,50099.0,835,2025-10-22 19:15:12.805420,,,,,,,,,
+,,,,835,2025-10-22 19:16:49.720558,0.1421956717967987,0.0019177797948941588,0.1421956717967987,0.1387544423341751,0.002319988328963518,0.1387544423341751,,,
+,,,,835,2025-10-22 19:17:15.057947,,,,,,,0.14013151824474335,0.0019283764995634556,0.14013151824474335
+0.1444578468799591,0.0011188057251274586,0.1444578468799591,50149.0,836,2025-10-22 19:22:59.805577,,,,,,,,,
+,,,,836,2025-10-22 19:25:23.765375,0.14415891468524933,0.00215230043977499,0.14415891468524933,0.15987615287303925,0.0028153813909739256,0.15987615287303925,,,
+,,,,836,2025-10-22 19:25:51.085134,,,,,,,0.13892816007137299,0.0022528793197125196,0.13892816007137299
+0.1187187060713768,0.0017837249906733632,0.1187187060713768,50199.0,837,2025-10-22 19:30:30.740561,,,,,,,,,
+,,,,837,2025-10-22 19:33:57.411386,0.1491127759218216,0.002315751975402236,0.1491127759218216,0.14268535375595093,0.002963020233437419,0.14268535375595093,,,
+,,,,837,2025-10-22 19:34:24.138380,,,,,,,0.13922308385372162,0.0024859956465661526,0.13922308385372162
+0.15860041975975037,0.0019404992926865816,0.15860041975975037,50249.0,838,2025-10-22 19:38:26.752076,,,,,,,,,
+,,,,838,2025-10-22 19:42:32.579405,0.1398041993379593,0.0014323510695248842,0.1398041993379593,0.1389319896697998,0.00209602783434093,0.1389319896697998,,,
+,,,,838,2025-10-22 19:43:00.982403,,,,,,,0.14286252856254578,0.0022168257273733616,0.14286252856254578
+0.14430519938468933,0.0016140940133482218,0.14430519938468933,50299.0,839,2025-10-22 19:45:53.974074,,,,,,,,,
+,,,,839,2025-10-22 19:51:04.617855,0.15684279799461365,0.0029740978498011827,0.15684279799461365,0.14021407067775726,0.0015725776320323348,0.14021407067775726,,,
+,,,,839,2025-10-22 19:51:29.850968,,,,,,,0.14060375094413757,0.0017856181366369128,0.14060375094413757
+0.15168893337249756,0.00116011593490839,0.15168893337249756,50349.0,840,2025-10-22 19:53:16.607569,,,,,,,,,
+0.14799946546554565,0.0017240328015759587,0.14799946546554565,50399.0,840,2025-10-22 19:57:55.147562,,,,,,,,,
+,,,,840,2025-10-22 19:59:31.580580,0.14395497739315033,0.0030717768240720034,0.14395497739315033,0.1429591178894043,0.0017616944387555122,0.1429591178894043,,,
+,,,,840,2025-10-22 19:59:55.835250,,,,,,,0.14117608964443207,0.002318952465429902,0.14117608964443207
+0.1426568627357483,0.0014107378665357828,0.1426568627357483,50449.0,841,2025-10-22 20:05:44.012748,,,,,,,,,
+,,,,841,2025-10-22 20:08:11.092500,0.14644351601600647,0.0021870534401386976,0.14644351601600647,0.14898863434791565,0.00264979456551373,0.14898863434791565,,,
+,,,,841,2025-10-22 20:08:36.750946,,,,,,,0.14155013859272003,0.0022708317264914513,0.14155013859272003
+0.16630595922470093,0.0015359047101810575,0.16630595922470093,50499.0,842,2025-10-22 20:13:13.249582,,,,,,,,,
+,,,,842,2025-10-22 20:16:28.456245,0.13892970979213715,0.0024100965820252895,0.13892970979213715,0.14485101401805878,0.001844248385168612,0.14485101401805878,,,
+,,,,842,2025-10-22 20:16:55.105603,,,,,,,0.13971276581287384,0.0021325659472495317,0.13971276581287384
+0.13464568555355072,0.0012192094000056386,0.13464568555355072,50549.0,843,2025-10-22 20:20:52.189378,,,,,,,,,
+,,,,843,2025-10-22 20:24:50.971717,0.1437384933233261,0.0028262848500162363,0.1437384933233261,0.14450553059577942,0.0014550152700394392,0.14450553059577942,,,
+,,,,843,2025-10-22 20:25:18.073241,,,,,,,0.14022178947925568,0.0024331295862793922,0.14022178947925568
+0.1201045960187912,0.0007303354213945568,0.1201045960187912,50599.0,844,2025-10-22 20:28:13.930312,,,,,,,,,
+,,,,844,2025-10-22 20:33:31.695848,0.1489722728729248,0.002906790701672435,0.1489722728729248,0.15757469832897186,0.0023381516803056,0.15757469832897186,,,
+,,,,844,2025-10-22 20:33:58.789571,,,,,,,0.13945627212524414,0.0021167697850614786,0.13945627212524414
+0.1333756446838379,0.001851760782301426,0.1333756446838379,50649.0,845,2025-10-22 20:35:52.638519,,,,,,,,,
+0.18297851085662842,0.0037459726445376873,0.18297851085662842,50699.0,845,2025-10-22 20:40:53.719743,,,,,,,,,
+,,,,845,2025-10-22 20:42:28.910708,0.15638238191604614,0.0027505282778292894,0.15638238191604614,0.13577823340892792,0.0023354636505246162,0.13577823340892792,,,
+,,,,845,2025-10-22 20:42:53.810347,,,,,,,0.14338387548923492,0.002252380596473813,0.14338387548923492
+0.1256609708070755,0.0025724691804498434,0.1256609708070755,50749.0,846,2025-10-22 20:48:48.793862,,,,,,,,,
+,,,,846,2025-10-22 20:51:01.660876,0.147343248128891,0.0020764339715242386,0.147343248128891,0.13725602626800537,0.0021773946937173605,0.13725602626800537,,,
+,,,,846,2025-10-22 20:51:27.088436,,,,,,,0.14014755189418793,0.0023404480889439583,0.14014755189418793
+0.14916075766086578,0.0013490174897015095,0.14916075766086578,50799.0,847,2025-10-22 20:56:18.753089,,,,,,,,,
+,,,,847,2025-10-22 20:59:27.958601,0.15226995944976807,0.0020645507611334324,0.15226995944976807,0.13250480592250824,0.001746140536852181,0.13250480592250824,,,
+,,,,847,2025-10-22 21:00:15.962682,,,,,,,0.14014862477779388,0.002023675013333559,0.14014862477779388
+0.1471092402935028,0.002315247431397438,0.1471092402935028,50849.0,848,2025-10-22 21:04:06.407987,,,,,,,,,
+,,,,848,2025-10-22 21:08:23.552017,0.14693015813827515,0.0028638863004744053,0.14693015813827515,0.13772478699684143,0.0015371434856206179,0.13772478699684143,,,
+,,,,848,2025-10-22 21:08:48.821147,,,,,,,0.14226503670215607,0.002439322182908654,0.14226503670215607
+0.15280868113040924,0.0036365867126733065,0.15280868113040924,50899.0,849,2025-10-22 21:11:39.609858,,,,,,,,,
+,,,,849,2025-10-22 21:16:57.239910,0.1476774364709854,0.0023720553144812584,0.1476774364709854,0.15520446002483368,0.001995830563828349,0.15520446002483368,,,
+,,,,849,2025-10-22 21:17:22.862386,,,,,,,0.13958458602428436,0.0019855450373142958,0.13958458602428436
+0.12528985738754272,0.000861543754581362,0.12528985738754272,50949.0,850,2025-10-22 21:19:06.396219,,,,,,,,,
+0.12930025160312653,0.0009057553252205253,0.12930025160312653,50999.0,850,2025-10-22 21:24:01.440451,,,,,,,,,
+,,,,850,2025-10-22 21:25:37.538398,0.14916305243968964,0.0019556323532015085,0.14916305243968964,0.1415398269891739,0.0015825896989554167,0.1415398269891739,,,
+,,,,850,2025-10-22 21:26:03.967251,,,,,,,0.1405109167098999,0.0021098051220178604,0.1405109167098999
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/tf/events.out.tfevents.1760726103.node-0.2906.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/tf/events.out.tfevents.1760726103.node-0.2906.0
new file mode 100644
index 0000000000000000000000000000000000000000..a2d32f16ac4cd7c63fa696c1ea5f64742a7c0fd6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_3/tf/events.out.tfevents.1760726103.node-0.2906.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ceee909966d7c679a0421fc6e5d4f72f4e9a5093b97f311eba77a8109d64d20e
+size 775208
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..11609a9a7aa72e616fced823da3f2f0c73198db0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 4, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-22 21:37:24.813761", "exp_hash": "testtube_v4"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..fa8ebcbeb48cb8c2063f986bc614f5fd9788b5cd
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/metrics.csv
@@ -0,0 +1,397 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.13037830591201782,0.0017187944613397121,0.13037830591201782,51049.0,851,2025-10-22 21:48:20.087748,,,,,,,,,
+,,,,851,2025-10-22 21:52:06.034938,0.14065057039260864,0.002963854232802987,0.14065057039260864,0.14268071949481964,0.0017414524918422103,0.14268071949481964,,,
+,,,,851,2025-10-22 21:52:57.850047,,,,,,,0.13934732973575592,0.002045540139079094,0.13934732973575592
+0.14018478989601135,0.0009531218674965203,0.14018478989601135,51099.0,852,2025-10-22 22:00:14.602157,,,,,,,,,
+,,,,852,2025-10-22 22:05:05.027493,0.13647952675819397,0.0017420736839994788,0.13647952675819397,0.14211571216583252,0.0017231350066140294,0.14211571216583252,,,
+,,,,852,2025-10-22 22:05:57.382447,,,,,,,0.14420488476753235,0.0022307077888399363,0.14420488476753235
+0.11875729262828827,0.0012105273781344295,0.11875729262828827,51149.0,853,2025-10-22 22:11:34.832246,,,,,,,,,
+,,,,853,2025-10-22 22:18:04.385431,0.1484295129776001,0.0013851637486368418,0.1484295129776001,0.14900581538677216,0.004368290770798922,0.14900581538677216,,,
+,,,,853,2025-10-22 22:18:55.602020,,,,,,,0.1402885615825653,0.0020009514410048723,0.1402885615825653
+0.15176880359649658,0.0015333890914916992,0.15176880359649658,51199.0,854,2025-10-22 22:22:58.869557,,,,,,,,,
+,,,,854,2025-10-22 22:31:02.970735,0.1388559639453888,0.0011187782511115074,0.1388559639453888,0.13765190541744232,0.002403494669124484,0.13765190541744232,,,
+,,,,854,2025-10-22 22:31:52.074823,,,,,,,0.14104662835597992,0.002140265190973878,0.14104662835597992
+0.13130152225494385,0.003874089801684022,0.13130152225494385,51249.0,855,2025-10-22 22:34:15.378453,,,,,,,,,
+0.14804191887378693,0.001177174155600369,0.14804191887378693,51299.0,855,2025-10-22 22:42:23.327740,,,,,,,,,
+,,,,855,2025-10-22 22:43:59.852983,0.15261220932006836,0.0013621533289551735,0.15261220932006836,0.1374952644109726,0.0024583041667938232,0.1374952644109726,,,
+,,,,855,2025-10-22 22:44:50.538803,,,,,,,0.14024178683757782,0.002282659290358424,0.14024178683757782
+0.12694339454174042,0.002589195966720581,0.12694339454174042,51349.0,856,2025-10-22 22:53:35.809834,,,,,,,,,
+,,,,856,2025-10-22 22:56:46.019083,0.1404147744178772,0.0018315206980332732,0.1404147744178772,0.14618144929409027,0.0019203481497243047,0.14618144929409027,,,
+,,,,856,2025-10-22 22:57:10.929542,,,,,,,0.1405709981918335,0.0021877826657146215,0.1405709981918335
+0.13710321485996246,0.00094651582185179,0.13710321485996246,51399.0,857,2025-10-22 23:04:23.116929,,,,,,,,,
+,,,,857,2025-10-22 23:09:12.454952,0.14417491853237152,0.0022922458592802286,0.14417491853237152,0.1618846207857132,0.0021372768096625805,0.1618846207857132,,,
+,,,,857,2025-10-22 23:09:37.503456,,,,,,,0.13962741196155548,0.002139671240001917,0.13962741196155548
+0.1233082264661789,0.000888683192897588,0.1233082264661789,51449.0,858,2025-10-22 23:15:10.625532,,,,,,,,,
+,,,,858,2025-10-22 23:21:36.901737,0.14499835669994354,0.0027918610721826553,0.14499835669994354,0.15607963502407074,0.005096021108329296,0.15607963502407074,,,
+,,,,858,2025-10-22 23:22:03.848041,,,,,,,0.1419636756181717,0.0022754690144211054,0.1419636756181717
+0.1646611988544464,0.0015095421113073826,0.1646611988544464,51499.0,859,2025-10-22 23:26:00.056729,,,,,,,,,
+,,,,859,2025-10-22 23:34:05.876669,0.1441415399312973,0.002320069819688797,0.1441415399312973,0.15756548941135406,0.0031610848382115364,0.15756548941135406,,,
+,,,,859,2025-10-22 23:34:33.534708,,,,,,,0.14071610569953918,0.0018851998029276729,0.14071610569953918
+0.17823366820812225,0.004922430031001568,0.17823366820812225,51549.0,860,2025-10-22 23:36:58.147435,,,,,,,,,
+0.1584956794977188,0.001917013549245894,0.1584956794977188,51599.0,860,2025-10-22 23:45:04.765455,,,,,,,,,
+,,,,860,2025-10-22 23:46:39.299097,0.1583656370639801,0.0036330174189060926,0.1583656370639801,0.14711476862430573,0.0016379425069317222,0.14711476862430573,,,
+,,,,860,2025-10-22 23:47:05.128245,,,,,,,0.14112259447574615,0.0020275760907679796,0.14112259447574615
+0.12713782489299774,0.002765693236142397,0.12713782489299774,51649.0,861,2025-10-22 23:55:52.943285,,,,,,,,,
+,,,,861,2025-10-22 23:59:04.705519,0.13904738426208496,0.0024089643266052008,0.13904738426208496,0.14996877312660217,0.0015189492842182517,0.14996877312660217,,,
+,,,,861,2025-10-22 23:59:31.059187,,,,,,,0.14085660874843597,0.002325199544429779,0.14085660874843597
+0.12533031404018402,0.003907931037247181,0.12533031404018402,51699.0,862,2025-10-23 00:06:44.888129,,,,,,,,,
+,,,,862,2025-10-23 00:11:40.667446,0.14991794526576996,0.002005769871175289,0.14991794526576996,0.1522531360387802,0.002374759642407298,0.1522531360387802,,,
+,,,,862,2025-10-23 00:12:07.491211,,,,,,,0.13911285996437073,0.00223668129183352,0.13911285996437073
+0.1053307056427002,0.0009980626637116075,0.1053307056427002,51749.0,863,2025-10-23 00:17:42.885050,,,,,,,,,
+,,,,863,2025-10-23 00:24:09.005230,0.14853674173355103,0.003000406315550208,0.14853674173355103,0.14792709052562714,0.002668743720278144,0.14792709052562714,,,
+,,,,863,2025-10-23 00:24:35.604700,,,,,,,0.13902699947357178,0.002048750873655081,0.13902699947357178
+0.15031541883945465,0.002642720239236951,0.15031541883945465,51799.0,864,2025-10-23 00:28:32.805791,,,,,,,,,
+,,,,864,2025-10-23 00:36:37.981373,0.147827610373497,0.0021275656763464212,0.147827610373497,0.14708144962787628,0.0017623540479689837,0.14708144962787628,,,
+,,,,864,2025-10-23 00:37:03.998170,,,,,,,0.14171192049980164,0.0025082235224545,0.14171192049980164
+0.1317089945077896,0.001345141907222569,0.1317089945077896,51849.0,865,2025-10-23 00:39:32.398599,,,,,,,,,
+0.12935930490493774,0.0008069399045780301,0.12935930490493774,51899.0,865,2025-10-23 00:47:41.220659,,,,,,,,,
+,,,,865,2025-10-23 00:49:14.643733,0.13524150848388672,0.0031826631166040897,0.13524150848388672,0.15096722543239594,0.0027206502854824066,0.15096722543239594,,,
+,,,,865,2025-10-23 00:49:41.255368,,,,,,,0.13765302300453186,0.0018215227173641324,0.13765302300453186
+0.10782301425933838,0.0012731279712170362,0.10782301425933838,51949.0,866,2025-10-23 00:58:29.618222,,,,,,,,,
+,,,,866,2025-10-23 01:01:43.246660,0.15087300539016724,0.0018262241501361132,0.15087300539016724,0.1442883163690567,0.00259033078327775,0.1442883163690567,,,
+,,,,866,2025-10-23 01:02:11.330418,,,,,,,0.14120130240917206,0.0022035532165318727,0.14120130240917206
+0.1612449586391449,0.0015988509403541684,0.1612449586391449,51999.0,867,2025-10-23 01:09:28.301379,,,,,,,,,
+,,,,867,2025-10-23 01:14:18.344072,0.14875683188438416,0.003084274008870125,0.14875683188438416,0.1433686763048172,0.0019665476866066456,0.1433686763048172,,,
+,,,,867,2025-10-23 01:14:47.523873,,,,,,,0.14239051938056946,0.0023532272316515446,0.14239051938056946
+0.12949463725090027,0.0011933435453101993,0.12949463725090027,52049.0,868,2025-10-23 01:20:22.832164,,,,,,,,,
+,,,,868,2025-10-23 01:26:51.391879,0.144911527633667,0.0030041250865906477,0.144911527633667,0.14510919153690338,0.0023731424007564783,0.14510919153690338,,,
+,,,,868,2025-10-23 01:27:19.399767,,,,,,,0.1386617124080658,0.002210087375715375,0.1386617124080658
+0.1298108547925949,0.0008091990021057427,0.1298108547925949,52099.0,869,2025-10-23 01:31:14.398436,,,,,,,,,
+,,,,869,2025-10-23 01:39:19.315157,0.14451414346694946,0.0018985827919095755,0.14451414346694946,0.1481834203004837,0.002518479945138097,0.1481834203004837,,,
+,,,,869,2025-10-23 01:39:45.453757,,,,,,,0.1403237134218216,0.002379893558099866,0.1403237134218216
+0.12993593513965607,0.0012928048381581903,0.12993593513965607,52149.0,870,2025-10-23 01:41:59.023428,,,,,,,,,
+0.12638819217681885,0.0013676430098712444,0.12638819217681885,52199.0,870,2025-10-23 01:50:06.493154,,,,,,,,,
+,,,,870,2025-10-23 01:51:41.535125,0.13237586617469788,0.001425244496203959,0.13237586617469788,0.13830144703388214,0.0021601126063615084,0.13830144703388214,,,
+,,,,870,2025-10-23 01:52:31.986044,,,,,,,0.1382557600736618,0.0021864650771021843,0.1382557600736618
+0.09924706071615219,0.0006746004801243544,0.09924706071615219,52249.0,871,2025-10-23 02:01:15.096313,,,,,,,,,
+,,,,871,2025-10-23 02:04:28.348392,0.15017662942409515,0.00399711774662137,0.15017662942409515,0.13275346159934998,0.0030152685940265656,0.13275346159934998,,,
+,,,,871,2025-10-23 02:05:17.827828,,,,,,,0.13834643363952637,0.0021378721576184034,0.13834643363952637
+0.1441430151462555,0.002049876842647791,0.1441430151462555,52299.0,872,2025-10-23 02:12:21.546398,,,,,,,,,
+,,,,872,2025-10-23 02:17:08.709179,0.14205433428287506,0.0017889498267322779,0.14205433428287506,0.15065310895442963,0.003071142826229334,0.15065310895442963,,,
+,,,,872,2025-10-23 02:17:36.347287,,,,,,,0.14105477929115295,0.002472812309861183,0.14105477929115295
+0.1498814970254898,0.006482968106865883,0.1498814970254898,52349.0,873,2025-10-23 02:23:07.894227,,,,,,,,,
+,,,,873,2025-10-23 02:29:38.359847,0.14642652869224548,0.0018907805206254125,0.14642652869224548,0.15149182081222534,0.002131015295162797,0.15149182081222534,,,
+,,,,873,2025-10-23 02:30:05.803192,,,,,,,0.14393708109855652,0.00233633304014802,0.14393708109855652
+0.1602553278207779,0.001868592225946486,0.1602553278207779,52399.0,874,2025-10-23 02:34:01.591569,,,,,,,,,
+,,,,874,2025-10-23 02:42:05.947312,0.14745357632637024,0.0030079223215579987,0.14745357632637024,0.15662938356399536,0.0018543170299381018,0.15662938356399536,,,
+,,,,874,2025-10-23 02:42:33.120813,,,,,,,0.140070378780365,0.0019885071087628603,0.140070378780365
+0.13447119295597076,0.001856712973676622,0.13447119295597076,52449.0,875,2025-10-23 02:44:51.041899,,,,,,,,,
+0.1355542540550232,0.0014322332572191954,0.1355542540550232,52499.0,875,2025-10-23 02:52:58.665747,,,,,,,,,
+,,,,875,2025-10-23 02:54:34.938165,0.13497354090213776,0.0013314017560333014,0.13497354090213776,0.1406777799129486,0.0015707749407738447,0.1406777799129486,,,
+,,,,875,2025-10-23 02:55:01.980514,,,,,,,0.14012224972248077,0.0021508962381631136,0.14012224972248077
+0.1677321046590805,0.002135578542947769,0.1677321046590805,52549.0,876,2025-10-23 03:03:48.004514,,,,,,,,,
+,,,,876,2025-10-23 03:07:05.659097,0.13532647490501404,0.001356029650196433,0.13532647490501404,0.13838759064674377,0.0015328042209148407,0.13838759064674377,,,
+,,,,876,2025-10-23 03:07:33.757180,,,,,,,0.1410951167345047,0.0020472120959311724,0.1410951167345047
+0.1604827493429184,0.005210728384554386,0.1604827493429184,52599.0,877,2025-10-23 03:14:45.438126,,,,,,,,,
+,,,,877,2025-10-23 03:19:34.494637,0.15023306012153625,0.003079775720834732,0.15023306012153625,0.13580359518527985,0.002129973843693733,0.13580359518527985,,,
+,,,,877,2025-10-23 03:20:28.304288,,,,,,,0.14018948376178741,0.0021990661043673754,0.14018948376178741
+0.1443239003419876,0.0017171563813462853,0.1443239003419876,52649.0,878,2025-10-23 03:25:59.146509,,,,,,,,,
+,,,,878,2025-10-23 03:32:28.785224,0.13773022592067719,0.001172515912912786,0.13773022592067719,0.15223091840744019,0.004297711420804262,0.15223091840744019,,,
+,,,,878,2025-10-23 03:32:55.803426,,,,,,,0.13844218850135803,0.0018780336249619722,0.13844218850135803
+0.15753760933876038,0.0020504507701843977,0.15753760933876038,52699.0,879,2025-10-23 03:36:50.525511,,,,,,,,,
+,,,,879,2025-10-23 03:44:54.190406,0.15039844810962677,0.0029427632689476013,0.15039844810962677,0.15275540947914124,0.00235488498583436,0.15275540947914124,,,
+,,,,879,2025-10-23 03:45:21.901973,,,,,,,0.14208927750587463,0.0020393214654177427,0.14208927750587463
+0.12156625092029572,0.003215736709535122,0.12156625092029572,52749.0,880,2025-10-23 03:47:41.544667,,,,,,,,,
+0.15373411774635315,0.004746941849589348,0.15373411774635315,52799.0,880,2025-10-23 03:55:48.485371,,,,,,,,,
+,,,,880,2025-10-23 03:57:21.050247,0.1580582857131958,0.0025206338614225388,0.1580582857131958,0.14063602685928345,0.002659569727256894,0.14063602685928345,,,
+,,,,880,2025-10-23 03:57:48.561933,,,,,,,0.13756409287452698,0.002196886111050844,0.13756409287452698
+0.13382107019424438,0.0016759152058511972,0.13382107019424438,52849.0,881,2025-10-23 04:06:30.637370,,,,,,,,,
+,,,,881,2025-10-23 04:09:45.517452,0.13612090051174164,0.003139826934784651,0.13612090051174164,0.14519380033016205,0.0031156856566667557,0.14519380033016205,,,
+,,,,881,2025-10-23 04:10:13.241068,,,,,,,0.14266714453697205,0.002157229231670499,0.14266714453697205
+0.12062706798315048,0.0015855535166338086,0.12062706798315048,52899.0,882,2025-10-23 04:17:20.663491,,,,,,,,,
+,,,,882,2025-10-23 04:22:09.409599,0.1363772600889206,0.0013315334217622876,0.1363772600889206,0.13997294008731842,0.001799947815015912,0.13997294008731842,,,
+,,,,882,2025-10-23 04:22:36.410539,,,,,,,0.14001688361167908,0.0021804282441735268,0.14001688361167908
+0.15238851308822632,0.0015825461596250534,0.15238851308822632,52949.0,883,2025-10-23 04:28:10.096551,,,,,,,,,
+,,,,883,2025-10-23 04:34:35.816060,0.145150825381279,0.0017640221631154418,0.145150825381279,0.141484797000885,0.002082112245261669,0.141484797000885,,,
+,,,,883,2025-10-23 04:35:01.740468,,,,,,,0.13626796007156372,0.002039157086983323,0.13626796007156372
+0.14788031578063965,0.0019941190257668495,0.14788031578063965,52999.0,884,2025-10-23 04:38:52.552166,,,,,,,,,
+,,,,884,2025-10-23 04:46:58.689103,0.14728327095508575,0.00372494594193995,0.14728327095508575,0.1368872970342636,0.0016200554091483355,0.1368872970342636,,,
+,,,,884,2025-10-23 04:47:50.906783,,,,,,,0.14024874567985535,0.002584668342024088,0.14024874567985535
+0.1256360113620758,0.0014762133359909058,0.1256360113620758,53049.0,885,2025-10-23 04:50:08.481884,,,,,,,,,
+0.11988583952188492,0.002784337382763624,0.11988583952188492,53099.0,885,2025-10-23 04:58:15.039955,,,,,,,,,
+,,,,885,2025-10-23 04:59:48.782827,0.14679546654224396,0.0019626463763415813,0.14679546654224396,0.15738403797149658,0.002870068419724703,0.15738403797149658,,,
+,,,,885,2025-10-23 05:00:15.033208,,,,,,,0.1369655877351761,0.0022090680431574583,0.1369655877351761
+0.12612664699554443,0.0012252506567165256,0.12612664699554443,53149.0,886,2025-10-23 05:09:00.954852,,,,,,,,,
+,,,,886,2025-10-23 05:12:12.044738,0.14561133086681366,0.0020805776584893465,0.14561133086681366,0.14410363137722015,0.002589962212368846,0.14410363137722015,,,
+,,,,886,2025-10-23 05:12:37.001634,,,,,,,0.13918189704418182,0.001914656488224864,0.13918189704418182
+0.13202019035816193,0.001271103392355144,0.13202019035816193,53199.0,887,2025-10-23 05:19:54.164789,,,,,,,,,
+,,,,887,2025-10-23 05:24:44.552754,0.1416434645652771,0.00364540982991457,0.1416434645652771,0.15382248163223267,0.003865365404635668,0.15382248163223267,,,
+,,,,887,2025-10-23 05:25:12.001338,,,,,,,0.138995960354805,0.0021744382102042437,0.138995960354805
+0.12031807750463486,0.0013398678274825215,0.12031807750463486,53249.0,888,2025-10-23 05:30:50.534994,,,,,,,,,
+,,,,888,2025-10-23 05:37:17.388975,0.14237256348133087,0.0015867101028561592,0.14237256348133087,0.14346396923065186,0.0014270193642005324,0.14346396923065186,,,
+,,,,888,2025-10-23 05:37:45.357859,,,,,,,0.1370868682861328,0.002261658199131489,0.1370868682861328
+0.12295906990766525,0.0015416678506880999,0.12295906990766525,53299.0,889,2025-10-23 05:41:41.606378,,,,,,,,,
+,,,,889,2025-10-23 05:49:44.262565,0.13937395811080933,0.001573410932905972,0.13937395811080933,0.14331956207752228,0.0035183436702936888,0.14331956207752228,,,
+,,,,889,2025-10-23 05:50:11.259859,,,,,,,0.13962633907794952,0.0018354632193222642,0.13962633907794952
+0.1256992369890213,0.0006651153671555221,0.1256992369890213,53349.0,890,2025-10-23 05:52:33.299139,,,,,,,,,
+0.1607617437839508,0.0014651210512965918,0.1607617437839508,53399.0,890,2025-10-23 06:00:40.729070,,,,,,,,,
+,,,,890,2025-10-23 06:02:16.586076,0.15539665520191193,0.0019226128933951259,0.15539665520191193,0.149740070104599,0.0013749614590778947,0.149740070104599,,,
+,,,,890,2025-10-23 06:02:44.118914,,,,,,,0.14218370616436005,0.0023181026335805655,0.14218370616436005
+0.13055913150310516,0.0018135375576093793,0.13055913150310516,53449.0,891,2025-10-23 06:11:29.665575,,,,,,,,,
+,,,,891,2025-10-23 06:14:41.485160,0.14714138209819794,0.0016141788801178336,0.14714138209819794,0.14161023497581482,0.0016422626795247197,0.14161023497581482,,,
+,,,,891,2025-10-23 06:15:08.108862,,,,,,,0.14094235002994537,0.0021578355226665735,0.14094235002994537
+0.11875884979963303,0.001336851972155273,0.11875884979963303,53499.0,892,2025-10-23 06:22:26.373625,,,,,,,,,
+,,,,892,2025-10-23 06:27:21.025047,0.14324119687080383,0.001776354038156569,0.14324119687080383,0.1480787992477417,0.0025457143783569336,0.1480787992477417,,,
+,,,,892,2025-10-23 06:27:48.939241,,,,,,,0.14072495698928833,0.0022463800851255655,0.14072495698928833
+0.13544338941574097,0.0021175225265324116,0.13544338941574097,53549.0,893,2025-10-23 06:33:22.837385,,,,,,,,,
+,,,,893,2025-10-23 06:39:48.869143,0.145830437541008,0.0013397516449913383,0.145830437541008,0.1363273561000824,0.00203121779486537,0.1363273561000824,,,
+,,,,893,2025-10-23 06:40:38.259201,,,,,,,0.14023278653621674,0.002029930707067251,0.14023278653621674
+0.1580713987350464,0.0012990925461053848,0.1580713987350464,53599.0,894,2025-10-23 06:44:41.557744,,,,,,,,,
+,,,,894,2025-10-23 06:52:46.461866,0.13437707722187042,0.0024474498350173235,0.13437707722187042,0.1325400322675705,0.0014090657932683825,0.1325400322675705,,,
+,,,,894,2025-10-23 06:53:37.499390,,,,,,,0.13900095224380493,0.0021340404637157917,0.13900095224380493
+0.139811173081398,0.0011202801251783967,0.139811173081398,53649.0,895,2025-10-23 06:55:57.472735,,,,,,,,,
+0.14997757971286774,0.002740177558735013,0.14997757971286774,53699.0,895,2025-10-23 07:04:03.912065,,,,,,,,,
+,,,,895,2025-10-23 07:05:37.603696,0.13625308871269226,0.0015284150140359998,0.13625308871269226,0.1379295289516449,0.0010456535965204239,0.1379295289516449,,,
+,,,,895,2025-10-23 07:06:03.513119,,,,,,,0.13947252929210663,0.002117312513291836,0.13947252929210663
+0.18134377896785736,0.005599508062005043,0.18134377896785736,53749.0,896,2025-10-23 07:14:54.330473,,,,,,,,,
+,,,,896,2025-10-23 07:18:06.959619,0.14357006549835205,0.0023651232477277517,0.14357006549835205,0.152418315410614,0.0025180564261972904,0.152418315410614,,,
+,,,,896,2025-10-23 07:18:34.457395,,,,,,,0.14304597675800323,0.0023366084787994623,0.14304597675800323
+0.13667474687099457,0.0012499873992055655,0.13667474687099457,53799.0,897,2025-10-23 07:25:47.551049,,,,,,,,,
+,,,,897,2025-10-23 07:30:40.485383,0.14473532140254974,0.001292630098760128,0.14473532140254974,0.14081275463104248,0.0017749980324879289,0.14081275463104248,,,
+,,,,897,2025-10-23 07:31:07.798739,,,,,,,0.13832661509513855,0.0022301985882222652,0.13832661509513855
+0.1354406476020813,0.000992813496850431,0.1354406476020813,53849.0,898,2025-10-23 07:36:37.767115,,,,,,,,,
+,,,,898,2025-10-23 07:43:06.202006,0.14250792562961578,0.0028824391774833202,0.14250792562961578,0.1434541791677475,0.0031174058094620705,0.1434541791677475,,,
+,,,,898,2025-10-23 07:43:33.505485,,,,,,,0.14218120276927948,0.0024086947087198496,0.14218120276927948
+0.1428629457950592,0.0020494929049164057,0.1428629457950592,53899.0,899,2025-10-23 07:47:27.409218,,,,,,,,,
+,,,,899,2025-10-23 07:55:34.298683,0.1424795389175415,0.00284834997728467,0.1424795389175415,0.14817942678928375,0.002042158739641309,0.14817942678928375,,,
+,,,,899,2025-10-23 07:56:02.181599,,,,,,,0.13740018010139465,0.002059477847069502,0.13740018010139465
+0.13801592588424683,0.0008873589686118066,0.13801592588424683,53949.0,900,2025-10-23 07:58:16.825388,,,,,,,,,
+0.13050596415996552,0.0019065983360633254,0.13050596415996552,53999.0,900,2025-10-23 08:06:24.476549,,,,,,,,,
+,,,,900,2025-10-23 08:08:00.470254,0.13230982422828674,0.001169663853943348,0.13230982422828674,0.1505051553249359,0.002335469936951995,0.1505051553249359,,,
+,,,,900,2025-10-23 08:08:29.420014,,,,,,,0.1409999281167984,0.0021306679118424654,0.1409999281167984
+0.1476573944091797,0.002012992510572076,0.1476573944091797,54049.0,901,2025-10-23 08:17:16.027943,,,,,,,,,
+,,,,901,2025-10-23 08:20:29.202858,0.1468377411365509,0.003519205842167139,0.1468377411365509,0.14399774372577667,0.0023018885403871536,0.14399774372577667,,,
+,,,,901,2025-10-23 08:20:55.850370,,,,,,,0.13753828406333923,0.0020665705669671297,0.13753828406333923
+0.11809898912906647,0.0008560172864235938,0.11809898912906647,54099.0,902,2025-10-23 08:28:08.389930,,,,,,,,,
+,,,,902,2025-10-23 08:32:55.675726,0.1435675323009491,0.0014314959989860654,0.1435675323009491,0.14619627594947815,0.0025072197895497084,0.14619627594947815,,,
+,,,,902,2025-10-23 08:33:21.679969,,,,,,,0.13870562613010406,0.002115066396072507,0.13870562613010406
+0.13578911125659943,0.0017717542359605432,0.13578911125659943,54149.0,903,2025-10-23 08:38:51.997539,,,,,,,,,
+,,,,903,2025-10-23 08:45:16.119601,0.14688898622989655,0.003602416254580021,0.14688898622989655,0.14919322729110718,0.003065733006224036,0.14919322729110718,,,
+,,,,903,2025-10-23 08:45:42.474195,,,,,,,0.1383463591337204,0.0019786753691732883,0.1383463591337204
+0.17928782105445862,0.0013577158097177744,0.17928782105445862,54199.0,904,2025-10-23 08:49:39.711354,,,,,,,,,
+,,,,904,2025-10-23 08:57:42.633352,0.13786178827285767,0.0026599939446896315,0.13786178827285767,0.14804832637310028,0.0021956844720989466,0.14804832637310028,,,
+,,,,904,2025-10-23 08:58:11.236216,,,,,,,0.13776372373104095,0.002365093445405364,0.13776372373104095
+0.14284299314022064,0.0035538573283702135,0.14284299314022064,54249.0,905,2025-10-23 09:00:30.857851,,,,,,,,,
+0.13722467422485352,0.0009740751120261848,0.13722467422485352,54299.0,905,2025-10-23 09:08:37.786321,,,,,,,,,
+,,,,905,2025-10-23 09:10:11.473681,0.13548843562602997,0.0011379914358258247,0.13548843562602997,0.14615678787231445,0.0020870219450443983,0.14615678787231445,,,
+,,,,905,2025-10-23 09:10:40.122428,,,,,,,0.14084523916244507,0.002175872679799795,0.14084523916244507
+0.1253642439842224,0.0008965341839939356,0.1253642439842224,54349.0,906,2025-10-23 09:19:27.605414,,,,,,,,,
+,,,,906,2025-10-23 09:22:41.833618,0.15114468336105347,0.0017230375669896603,0.15114468336105347,0.1332891285419464,0.0019947239197790623,0.1332891285419464,,,
+,,,,906,2025-10-23 09:23:31.874483,,,,,,,0.13867372274398804,0.002190511440858245,0.13867372274398804
+0.14213016629219055,0.001751336851157248,0.14213016629219055,54399.0,907,2025-10-23 09:30:37.007462,,,,,,,,,
+,,,,907,2025-10-23 09:35:26.335678,0.1414801925420761,0.0028227795846760273,0.1414801925420761,0.14462418854236603,0.0027070853393524885,0.14462418854236603,,,
+,,,,907,2025-10-23 09:35:54.393117,,,,,,,0.13809899985790253,0.001837005838751793,0.13809899985790253
+0.12321195751428604,0.0007983804680407047,0.12321195751428604,54449.0,908,2025-10-23 09:41:24.128185,,,,,,,,,
+,,,,908,2025-10-23 09:47:51.243894,0.14457650482654572,0.003135568229481578,0.14457650482654572,0.14437344670295715,0.0015066225314512849,0.14437344670295715,,,
+,,,,908,2025-10-23 09:48:18.815323,,,,,,,0.13695234060287476,0.002144270110875368,0.13695234060287476
+0.12898829579353333,0.0019726965110749006,0.12898829579353333,54499.0,909,2025-10-23 09:52:13.955494,,,,,,,,,
+,,,,909,2025-10-23 10:00:19.164011,0.13780073821544647,0.0018148476956412196,0.13780073821544647,0.14550060033798218,0.0014713873388245702,0.14550060033798218,,,
+,,,,909,2025-10-23 10:00:49.067653,,,,,,,0.14164961874485016,0.0023291613906621933,0.14164961874485016
+0.13758210837841034,0.003372764680534601,0.13758210837841034,54549.0,910,2025-10-23 10:03:08.527626,,,,,,,,,
+0.12932473421096802,0.0027795855421572924,0.12932473421096802,54599.0,910,2025-10-23 10:11:16.176378,,,,,,,,,
+,,,,910,2025-10-23 10:12:50.724278,0.14874301850795746,0.0014181205770000815,0.14874301850795746,0.1354130208492279,0.0021801854018121958,0.1354130208492279,,,
+,,,,910,2025-10-23 10:13:19.062812,,,,,,,0.14271068572998047,0.0022275452502071857,0.14271068572998047
+0.151058167219162,0.00423098262399435,0.151058167219162,54649.0,911,2025-10-23 10:22:10.129583,,,,,,,,,
+,,,,911,2025-10-23 10:25:21.389850,0.15751561522483826,0.0030791163444519043,0.15751561522483826,0.1434636116027832,0.002242979360744357,0.1434636116027832,,,
+,,,,911,2025-10-23 10:25:50.868963,,,,,,,0.13992175459861755,0.002200712449848652,0.13992175459861755
+0.15137742459774017,0.0015821747947484255,0.15137742459774017,54699.0,912,2025-10-23 10:32:59.922755,,,,,,,,,
+,,,,912,2025-10-23 10:37:46.998499,0.14460065960884094,0.0022596612107008696,0.14460065960884094,0.14809824526309967,0.0018336413195356727,0.14809824526309967,,,
+,,,,912,2025-10-23 10:38:15.218493,,,,,,,0.1384015679359436,0.0021206934470683336,0.1384015679359436
+0.1505616456270218,0.001186800072900951,0.1505616456270218,54749.0,913,2025-10-23 10:43:52.677659,,,,,,,,,
+,,,,913,2025-10-23 10:50:18.174334,0.12718766927719116,0.002446021419018507,0.12718766927719116,0.1362992227077484,0.0028964627999812365,0.1362992227077484,,,
+,,,,913,2025-10-23 10:50:46.197830,,,,,,,0.14119327068328857,0.0022934044245630503,0.14119327068328857
+0.1330060064792633,0.001408666605129838,0.1330060064792633,54799.0,914,2025-10-23 10:54:37.726874,,,,,,,,,
+,,,,914,2025-10-23 11:02:40.486294,0.13926510512828827,0.0014389080461114645,0.13926510512828827,0.14511574804782867,0.0027038229163736105,0.14511574804782867,,,
+,,,,914,2025-10-23 11:03:07.832558,,,,,,,0.14057114720344543,0.0019284605514258146,0.14057114720344543
+0.13993293046951294,0.0008461339748464525,0.13993293046951294,54849.0,915,2025-10-23 11:05:29.137220,,,,,,,,,
+0.1458727866411209,0.0014353336300700903,0.1458727866411209,54899.0,915,2025-10-23 11:13:36.140599,,,,,,,,,
+,,,,915,2025-10-23 11:15:10.541120,0.14219242334365845,0.002491014078259468,0.14219242334365845,0.14351604878902435,0.0014978258404880762,0.14351604878902435,,,
+,,,,915,2025-10-23 11:15:39.097406,,,,,,,0.13835489749908447,0.0018905730685219169,0.13835489749908447
+0.13587389886379242,0.0012241414515301585,0.13587389886379242,54949.0,916,2025-10-23 11:24:26.394912,,,,,,,,,
+,,,,916,2025-10-23 11:27:39.276740,0.1460668444633484,0.0014188943896442652,0.1460668444633484,0.1516619622707367,0.0016802805475890636,0.1516619622707367,,,
+,,,,916,2025-10-23 11:28:08.080641,,,,,,,0.14122584462165833,0.0021035349927842617,0.14122584462165833
+0.13244512677192688,0.0019116675248369575,0.13244512677192688,54999.0,917,2025-10-23 11:35:20.940964,,,,,,,,,
+,,,,917,2025-10-23 11:40:08.579842,0.1380438357591629,0.0013063804944977164,0.1380438357591629,0.14970123767852783,0.0020271865651011467,0.14970123767852783,,,
+,,,,917,2025-10-23 11:40:37.358774,,,,,,,0.13644778728485107,0.0018217028118669987,0.13644778728485107
+0.15115764737129211,0.0009320875979028642,0.15115764737129211,55049.0,918,2025-10-23 11:46:15.013530,,,,,,,,,
+,,,,918,2025-10-23 11:52:42.300462,0.1420036405324936,0.002606526482850313,0.1420036405324936,0.13493730127811432,0.0020473471377044916,0.13493730127811432,,,
+,,,,918,2025-10-23 11:53:10.020993,,,,,,,0.13724178075790405,0.002093059942126274,0.13724178075790405
+0.10961703211069107,0.0011426309356465936,0.10961703211069107,55099.0,919,2025-10-23 11:57:05.267333,,,,,,,,,
+,,,,919,2025-10-23 12:05:06.858945,0.14084896445274353,0.00134649605024606,0.14084896445274353,0.1421128213405609,0.0016659671673551202,0.1421128213405609,,,
+,,,,919,2025-10-23 12:05:34.132485,,,,,,,0.1436733454465866,0.0024033093359321356,0.1436733454465866
+0.13002005219459534,0.0011101245181635022,0.13002005219459534,55149.0,920,2025-10-23 12:07:50.424273,,,,,,,,,
+0.1626521646976471,0.0038119922392070293,0.1626521646976471,55199.0,920,2025-10-23 12:15:56.964307,,,,,,,,,
+,,,,920,2025-10-23 12:17:29.792447,0.141926571726799,0.001864351681433618,0.141926571726799,0.14260634779930115,0.0022692957427352667,0.14260634779930115,,,
+,,,,920,2025-10-23 12:17:57.111684,,,,,,,0.14042121171951294,0.0021175991278141737,0.14042121171951294
+0.12829746305942535,0.0036101127043366432,0.12829746305942535,55249.0,921,2025-10-23 12:26:37.283856,,,,,,,,,
+,,,,921,2025-10-23 12:29:50.871559,0.14821557700634003,0.0016595316119492054,0.14821557700634003,0.1421988159418106,0.0018524348270148039,0.1421988159418106,,,
+,,,,921,2025-10-23 12:30:19.831174,,,,,,,0.13676363229751587,0.0020984914153814316,0.13676363229751587
+0.14365798234939575,0.001094325794838369,0.14365798234939575,55299.0,922,2025-10-23 12:37:27.425639,,,,,,,,,
+,,,,922,2025-10-23 12:42:16.440693,0.1484600454568863,0.0023900459054857492,0.1484600454568863,0.1462058126926422,0.0016991386655718088,0.1462058126926422,,,
+,,,,922,2025-10-23 12:42:43.182681,,,,,,,0.13498108088970184,0.002044620458036661,0.13498108088970184
+0.1265091747045517,0.0020472800824791193,0.1265091747045517,55349.0,923,2025-10-23 12:48:14.032086,,,,,,,,,
+,,,,923,2025-10-23 12:54:42.331789,0.14723898470401764,0.0025379008147865534,0.14723898470401764,0.13724298775196075,0.0029601112473756075,0.13724298775196075,,,
+,,,,923,2025-10-23 12:55:08.606137,,,,,,,0.13887475430965424,0.001943690818734467,0.13887475430965424
+0.16263701021671295,0.006227702368050814,0.16263701021671295,55399.0,924,2025-10-23 12:59:18.080075,,,,,,,,,
+,,,,924,2025-10-23 13:07:20.820324,0.1387258917093277,0.0021714025642722845,0.1387258917093277,0.13400645554065704,0.0018568095983937383,0.13400645554065704,,,
+,,,,924,2025-10-23 13:07:48.239661,,,,,,,0.1390095353126526,0.0020484006963670254,0.1390095353126526
+0.1439414918422699,0.005001133307814598,0.1439414918422699,55449.0,925,2025-10-23 13:10:13.255538,,,,,,,,,
+0.12996935844421387,0.0007500241044908762,0.12996935844421387,55499.0,925,2025-10-23 13:18:20.075090,,,,,,,,,
+,,,,925,2025-10-23 13:19:55.444014,0.1438966989517212,0.0026038317009806633,0.1438966989517212,0.14356781542301178,0.0018271052977070212,0.14356781542301178,,,
+,,,,925,2025-10-23 13:20:22.867423,,,,,,,0.14043626189231873,0.0021620604675263166,0.14043626189231873
+0.13649971783161163,0.0034042566549032927,0.13649971783161163,55549.0,926,2025-10-23 13:29:13.574035,,,,,,,,,
+,,,,926,2025-10-23 13:32:26.141583,0.14517807960510254,0.0026078687515109777,0.14517807960510254,0.14152953028678894,0.0028316339012235403,0.14152953028678894,,,
+,,,,926,2025-10-23 13:32:53.609082,,,,,,,0.13845722377300262,0.0019361174199730158,0.13845722377300262
+0.14890426397323608,0.0047586653381586075,0.14890426397323608,55599.0,927,2025-10-23 13:40:07.246178,,,,,,,,,
+,,,,927,2025-10-23 13:44:58.698847,0.1377602368593216,0.0027443242724984884,0.1377602368593216,0.13729816675186157,0.0017800618661567569,0.13729816675186157,,,
+,,,,927,2025-10-23 13:45:26.256051,,,,,,,0.1393185406923294,0.0024229788687080145,0.1393185406923294
+0.1477537602186203,0.0013337527634575963,0.1477537602186203,55649.0,928,2025-10-23 13:50:56.239451,,,,,,,,,
+,,,,928,2025-10-23 13:57:23.575863,0.14275367558002472,0.001829941407777369,0.14275367558002472,0.1433657854795456,0.0027702494990080595,0.1433657854795456,,,
+,,,,928,2025-10-23 13:57:50.389104,,,,,,,0.13909408450126648,0.0020457706414163113,0.13909408450126648
+0.13522914052009583,0.002258620224893093,0.13522914052009583,55699.0,929,2025-10-23 14:01:42.740917,,,,,,,,,
+,,,,929,2025-10-23 14:09:48.947016,0.12860320508480072,0.002522942842915654,0.12860320508480072,0.1432177871465683,0.002244260162115097,0.1432177871465683,,,
+,,,,929,2025-10-23 14:10:17.339615,,,,,,,0.14206242561340332,0.0022269035689532757,0.14206242561340332
+0.1355365663766861,0.001862691598944366,0.1355365663766861,55749.0,930,2025-10-23 14:12:34.981525,,,,,,,,,
+0.13135163486003876,0.0010645829606801271,0.13135163486003876,55799.0,930,2025-10-23 14:20:43.453438,,,,,,,,,
+,,,,930,2025-10-23 14:22:21.160510,0.14380963146686554,0.0027982385363429785,0.14380963146686554,0.13494855165481567,0.0016367444768548012,0.13494855165481567,,,
+,,,,930,2025-10-23 14:22:48.872992,,,,,,,0.1389177292585373,0.0024297304917126894,0.1389177292585373
+0.16128340363502502,0.004909811541438103,0.16128340363502502,55849.0,931,2025-10-23 14:31:34.118366,,,,,,,,,
+,,,,931,2025-10-23 14:34:46.027382,0.15272095799446106,0.0026967856101691723,0.15272095799446106,0.12864141166210175,0.002081075916066766,0.12864141166210175,,,
+,,,,931,2025-10-23 14:35:38.049445,,,,,,,0.14124631881713867,0.0021424167789518833,0.14124631881713867
+0.14434747397899628,0.001252359594218433,0.14434747397899628,55899.0,932,2025-10-23 14:42:43.448143,,,,,,,,,
+,,,,932,2025-10-23 14:47:34.743720,0.14776195585727692,0.0021026076283305883,0.14776195585727692,0.14484618604183197,0.002532604616135359,0.14484618604183197,,,
+,,,,932,2025-10-23 14:48:01.917241,,,,,,,0.13985596597194672,0.0022677145898342133,0.13985596597194672
+0.1325402557849884,0.0031439263839274645,0.1325402557849884,55949.0,933,2025-10-23 14:53:41.579627,,,,,,,,,
+,,,,933,2025-10-23 15:00:07.697460,0.1453828662633896,0.002824766095727682,0.1453828662633896,0.14860907196998596,0.0015408312901854515,0.14860907196998596,,,
+,,,,933,2025-10-23 15:00:36.301094,,,,,,,0.14038990437984467,0.0020328944083303213,0.14038990437984467
+0.1307716816663742,0.0013823502231389284,0.1307716816663742,55999.0,934,2025-10-23 15:04:37.161940,,,,,,,,,
+,,,,934,2025-10-23 15:12:44.134727,0.14981989562511444,0.0029826161917299032,0.14981989562511444,0.15890054404735565,0.004494118504226208,0.15890054404735565,,,
+,,,,934,2025-10-23 15:13:10.363801,,,,,,,0.1386590152978897,0.0023349302355200052,0.1386590152978897
+0.13774915039539337,0.0012023963499814272,0.13774915039539337,56049.0,935,2025-10-23 15:15:23.784264,,,,,,,,,
+0.11927227675914764,0.0016094966558739543,0.11927227675914764,56099.0,935,2025-10-23 15:23:31.938029,,,,,,,,,
+,,,,935,2025-10-23 15:25:06.861536,0.14277659356594086,0.0025498762261122465,0.14277659356594086,0.13457204401493073,0.002229830250144005,0.13457204401493073,,,
+,,,,935,2025-10-23 15:25:34.050327,,,,,,,0.14011403918266296,0.00224836147390306,0.14011403918266296
+0.16056512296199799,0.001761163119226694,0.16056512296199799,56149.0,936,2025-10-23 15:34:19.342624,,,,,,,,,
+,,,,936,2025-10-23 15:37:34.758154,0.146882101893425,0.0024461911525577307,0.146882101893425,0.14599066972732544,0.0018321974202990532,0.14599066972732544,,,
+,,,,936,2025-10-23 15:38:02.468271,,,,,,,0.1389053761959076,0.002024067332968116,0.1389053761959076
+0.13888950645923615,0.003924550488591194,0.13888950645923615,56199.0,937,2025-10-23 15:45:20.467072,,,,,,,,,
+,,,,937,2025-10-23 15:50:08.486808,0.13871058821678162,0.0026733886916190386,0.13871058821678162,0.1501568853855133,0.0022552672307938337,0.1501568853855133,,,
+,,,,937,2025-10-23 15:50:36.930560,,,,,,,0.13960416615009308,0.002348422771319747,0.13960416615009308
+0.142277792096138,0.0016440076287835836,0.142277792096138,56249.0,938,2025-10-23 15:56:12.588233,,,,,,,,,
+,,,,938,2025-10-23 16:02:38.433293,0.14893151819705963,0.002588981529697776,0.14893151819705963,0.14482495188713074,0.001848447835072875,0.14482495188713074,,,
+,,,,938,2025-10-23 16:03:05.490709,,,,,,,0.1401425451040268,0.0019892004784196615,0.1401425451040268
+0.13688205182552338,0.0017792583676055074,0.13688205182552338,56299.0,939,2025-10-23 16:07:01.887383,,,,,,,,,
+,,,,939,2025-10-23 16:15:07.238439,0.15131671726703644,0.002138037234544754,0.15131671726703644,0.15021996200084686,0.001688229269348085,0.15021996200084686,,,
+,,,,939,2025-10-23 16:15:34.412651,,,,,,,0.13962280750274658,0.0019108687993139029,0.13962280750274658
+0.15712137520313263,0.0028474058490246534,0.15712137520313263,56349.0,940,2025-10-23 16:18:01.203530,,,,,,,,,
+0.1736086755990982,0.0017166942125186324,0.1736086755990982,56399.0,940,2025-10-23 16:26:10.952766,,,,,,,,,
+,,,,940,2025-10-23 16:27:43.142891,0.1534372717142105,0.0018115853890776634,0.1534372717142105,0.1491188406944275,0.0018671011785045266,0.1491188406944275,,,
+,,,,940,2025-10-23 16:28:15.613736,,,,,,,0.14012254774570465,0.0023022154346108437,0.14012254774570465
+0.13790006935596466,0.0017392727313563228,0.13790006935596466,56449.0,941,2025-10-23 16:37:12.878496,,,,,,,,,
+,,,,941,2025-10-23 16:40:24.831555,0.1392950415611267,0.0018220775527879596,0.1392950415611267,0.14264363050460815,0.0018255746690556407,0.14264363050460815,,,
+,,,,941,2025-10-23 16:40:51.915552,,,,,,,0.14020496606826782,0.0020587181206792593,0.14020496606826782
+0.12847566604614258,0.0009415687527507544,0.12847566604614258,56499.0,942,2025-10-23 16:48:06.292052,,,,,,,,,
+,,,,942,2025-10-23 16:52:56.018724,0.14085613191127777,0.002150007989257574,0.14085613191127777,0.12953108549118042,0.0015211021527647972,0.12953108549118042,,,
+,,,,942,2025-10-23 16:53:48.810776,,,,,,,0.140192911028862,0.0020600068382918835,0.140192911028862
+0.14385271072387695,0.0011104485020041466,0.14385271072387695,56549.0,943,2025-10-23 16:59:26.049261,,,,,,,,,
+,,,,943,2025-10-23 17:05:52.381811,0.16196522116661072,0.002127245767042041,0.16196522116661072,0.15113049745559692,0.0024207811802625656,0.15113049745559692,,,
+,,,,943,2025-10-23 17:06:18.688694,,,,,,,0.13468262553215027,0.0021208387333899736,0.13468262553215027
+0.18316857516765594,0.0028968651313334703,0.18316857516765594,56599.0,944,2025-10-23 17:10:11.949544,,,,,,,,,
+,,,,944,2025-10-23 17:18:18.252876,0.1420721560716629,0.001832772046327591,0.1420721560716629,0.14867226779460907,0.0025537675246596336,0.14867226779460907,,,
+,,,,944,2025-10-23 17:18:47.726113,,,,,,,0.14016865193843842,0.0020955323707312346,0.14016865193843842
+0.15133418142795563,0.0024689598940312862,0.15133418142795563,56649.0,945,2025-10-23 17:21:09.524117,,,,,,,,,
+0.12292633205652237,0.0007817224250175059,0.12292633205652237,56699.0,945,2025-10-23 17:29:19.403049,,,,,,,,,
+,,,,945,2025-10-23 17:30:55.714148,0.14479152858257294,0.0022674985229969025,0.14479152858257294,0.13760782778263092,0.002538064494729042,0.13760782778263092,,,
+,,,,945,2025-10-23 17:31:23.734097,,,,,,,0.13638798892498016,0.002175985835492611,0.13638798892498016
+0.15450897812843323,0.0063896793872118,0.15450897812843323,56749.0,946,2025-10-23 17:40:19.927928,,,,,,,,,
+,,,,946,2025-10-23 17:43:32.633404,0.13311798870563507,0.0015090598026290536,0.13311798870563507,0.13893751800060272,0.0017691089306026697,0.13893751800060272,,,
+,,,,946,2025-10-23 17:43:59.628633,,,,,,,0.1350436955690384,0.0019962184596806765,0.1350436955690384
+0.1413090080022812,0.002137892646715045,0.1413090080022812,56799.0,947,2025-10-23 17:51:09.092801,,,,,,,,,
+,,,,947,2025-10-23 17:56:05.060956,0.14199204742908478,0.0041936286725103855,0.14199204742908478,0.1398763507604599,0.001874692621640861,0.1398763507604599,,,
+,,,,947,2025-10-23 17:56:31.857778,,,,,,,0.13849472999572754,0.001771052135154605,0.13849472999572754
+0.12582744657993317,0.0011542884167283773,0.12582744657993317,56849.0,948,2025-10-23 18:02:11.875062,,,,,,,,,
+,,,,948,2025-10-23 18:08:40.329738,0.13482016324996948,0.002312338212504983,0.13482016324996948,0.15001006424427032,0.0036090521607548,0.15001006424427032,,,
+,,,,948,2025-10-23 18:09:07.679905,,,,,,,0.13826103508472443,0.0020381060894578695,0.13826103508472443
+0.14337854087352753,0.005709671415388584,0.14337854087352753,56899.0,949,2025-10-23 18:13:02.078122,,,,,,,,,
+,,,,949,2025-10-23 18:21:07.746824,0.1316857784986496,0.002226648386567831,0.1316857784986496,0.14506076276302338,0.0024894175585359335,0.14506076276302338,,,
+,,,,949,2025-10-23 18:21:35.115674,,,,,,,0.13655239343643188,0.0022267724853008986,0.13655239343643188
+0.13708798587322235,0.001333058811724186,0.13708798587322235,56949.0,950,2025-10-23 18:23:58.347423,,,,,,,,,
+0.1235436275601387,0.0005930427578277886,0.1235436275601387,56999.0,950,2025-10-23 18:32:07.371521,,,,,,,,,
+,,,,950,2025-10-23 18:33:43.607807,0.14091883599758148,0.001532499329186976,0.14091883599758148,0.1467127948999405,0.002045057248324156,0.1467127948999405,,,
+,,,,950,2025-10-23 18:34:10.320162,,,,,,,0.13996517658233643,0.0019158859504386783,0.13996517658233643
+0.12536314129829407,0.0030081546865403652,0.12536314129829407,57049.0,951,2025-10-23 18:43:02.841201,,,,,,,,,
+,,,,951,2025-10-23 18:46:15.474572,0.1399591863155365,0.0022714415099471807,0.1399591863155365,0.13821586966514587,0.0018728433642536402,0.13821586966514587,,,
+,,,,951,2025-10-23 18:46:46.085105,,,,,,,0.13644282519817352,0.0021979904267936945,0.13644282519817352
+0.15412233769893646,0.0013544250978156924,0.15412233769893646,57099.0,952,2025-10-23 18:54:05.467023,,,,,,,,,
+,,,,952,2025-10-23 18:58:56.645896,0.14678184688091278,0.0013426656369119883,0.14678184688091278,0.15213701128959656,0.0020246123895049095,0.15213701128959656,,,
+,,,,952,2025-10-23 18:59:24.598455,,,,,,,0.13859520852565765,0.0019130198052152991,0.13859520852565765
+0.11109239608049393,0.0036780068185180426,0.11109239608049393,57149.0,953,2025-10-23 19:05:02.989202,,,,,,,,,
+,,,,953,2025-10-23 19:11:29.678745,0.14291319251060486,0.0018436550162732601,0.14291319251060486,0.1423020213842392,0.0020275951828807592,0.1423020213842392,,,
+,,,,953,2025-10-23 19:11:57.890980,,,,,,,0.13858391344547272,0.0021966989152133465,0.13858391344547272
+0.15373092889785767,0.0022423863410949707,0.15373092889785767,57199.0,954,2025-10-23 19:15:49.980032,,,,,,,,,
+,,,,954,2025-10-23 19:23:57.855688,0.1396539807319641,0.002023765118792653,0.1396539807319641,0.151475727558136,0.002146700629964471,0.151475727558136,,,
+,,,,954,2025-10-23 19:24:26.409502,,,,,,,0.13563084602355957,0.00201035151258111,0.13563084602355957
+0.15471656620502472,0.00432616239413619,0.15471656620502472,57249.0,955,2025-10-23 19:26:48.176265,,,,,,,,,
+0.14659462869167328,0.004471450578421354,0.14659462869167328,57299.0,955,2025-10-23 19:34:57.463430,,,,,,,,,
+,,,,955,2025-10-23 19:36:32.555308,0.14358952641487122,0.0020119633991271257,0.14358952641487122,0.13832572102546692,0.0016009386163204908,0.13832572102546692,,,
+,,,,955,2025-10-23 19:37:01.626214,,,,,,,0.13742049038410187,0.0020072043407708406,0.13742049038410187
+0.139059379696846,0.0025139763019979,0.139059379696846,57349.0,956,2025-10-23 19:45:51.683558,,,,,,,,,
+,,,,956,2025-10-23 19:49:05.141101,0.146983802318573,0.00374155817553401,0.146983802318573,0.14300690591335297,0.0019487820100039244,0.14300690591335297,,,
+,,,,956,2025-10-23 19:49:33.373897,,,,,,,0.13760724663734436,0.00194192910566926,0.13760724663734436
+0.12961488962173462,0.0010061096400022507,0.12961488962173462,57399.0,957,2025-10-23 19:56:44.107561,,,,,,,,,
+,,,,957,2025-10-23 20:01:33.062566,0.14609232544898987,0.0018996703438460827,0.14609232544898987,0.14305958151817322,0.0016687517054378986,0.14305958151817322,,,
+,,,,957,2025-10-23 20:02:00.508443,,,,,,,0.13497470319271088,0.0020090704783797264,0.13497470319271088
+0.1291678547859192,0.001255153096280992,0.1291678547859192,57449.0,958,2025-10-23 20:07:35.211464,,,,,,,,,
+,,,,958,2025-10-23 20:14:05.086903,0.1470763236284256,0.0032810228876769543,0.1470763236284256,0.14997783303260803,0.0015451321378350258,0.14997783303260803,,,
+,,,,958,2025-10-23 20:14:33.260812,,,,,,,0.14067624509334564,0.002340018982067704,0.14067624509334564
+0.14283812046051025,0.0018650240963324904,0.14283812046051025,57499.0,959,2025-10-23 20:18:29.712055,,,,,,,,,
+,,,,959,2025-10-23 20:26:37.086740,0.13967736065387726,0.0018841350683942437,0.13967736065387726,0.1453874111175537,0.001767212525010109,0.1453874111175537,,,
+,,,,959,2025-10-23 20:27:05.202976,,,,,,,0.1371794193983078,0.002083251252770424,0.1371794193983078
+0.16126857697963715,0.0028141760267317295,0.16126857697963715,57549.0,960,2025-10-23 20:29:30.606929,,,,,,,,,
+0.13493125140666962,0.001466267043724656,0.13493125140666962,57599.0,960,2025-10-23 20:37:39.614825,,,,,,,,,
+,,,,960,2025-10-23 20:39:14.589465,0.14809413254261017,0.002520246896892786,0.14809413254261017,0.13484244048595428,0.001869393978267908,0.13484244048595428,,,
+,,,,960,2025-10-23 20:39:42.277035,,,,,,,0.13737797737121582,0.0020825585816055536,0.13737797737121582
+0.10885930061340332,0.0008680244209244847,0.10885930061340332,57649.0,961,2025-10-23 20:48:32.109690,,,,,,,,,
+,,,,961,2025-10-23 20:51:45.475687,0.14217720925807953,0.001306452788412571,0.14217720925807953,0.14137005805969238,0.002109975554049015,0.14137005805969238,,,
+,,,,961,2025-10-23 20:52:12.945878,,,,,,,0.13793592154979706,0.0018540075980126858,0.13793592154979706
+0.14026081562042236,0.0012538268929347396,0.14026081562042236,57699.0,962,2025-10-23 20:59:33.363551,,,,,,,,,
+,,,,962,2025-10-23 21:04:27.004476,0.13893382251262665,0.0020171368960291147,0.13893382251262665,0.14455415308475494,0.0019001415930688381,0.14455415308475494,,,
+,,,,962,2025-10-23 21:04:56.075901,,,,,,,0.13780458271503448,0.002016110811382532,0.13780458271503448
+0.14278675615787506,0.0010098556522279978,0.14278675615787506,57749.0,963,2025-10-23 21:10:26.988857,,,,,,,,,
+,,,,963,2025-10-23 21:16:55.226336,0.1429261416196823,0.002192875137552619,0.1429261416196823,0.14599545300006866,0.0014216472627595067,0.14599545300006866,,,
+,,,,963,2025-10-23 21:17:23.374929,,,,,,,0.1374988555908203,0.0021232168655842543,0.1374988555908203
+0.11680338531732559,0.0008770189015194774,0.11680338531732559,57799.0,964,2025-10-23 21:21:13.849663,,,,,,,,,
+,,,,964,2025-10-23 21:29:20.332568,0.1344490796327591,0.001413975958712399,0.1344490796327591,0.13973753154277802,0.0022949378471821547,0.13973753154277802,,,
+,,,,964,2025-10-23 21:29:48.863864,,,,,,,0.1434374451637268,0.002487257355824113,0.1434374451637268
+0.14598162472248077,0.002788403769955039,0.14598162472248077,57849.0,965,2025-10-23 21:32:06.284696,,,,,,,,,
+0.1551961600780487,0.0051588150672614574,0.1551961600780487,57899.0,965,2025-10-23 21:40:15.802942,,,,,,,,,
+,,,,965,2025-10-23 21:41:48.068910,0.1416933536529541,0.0017964495345950127,0.1416933536529541,0.1455308049917221,0.0020515311043709517,0.1455308049917221,,,
+,,,,965,2025-10-23 21:42:14.333974,,,,,,,0.13940846920013428,0.0020603840239346027,0.13940846920013428
+0.13260455429553986,0.0011508322786539793,0.13260455429553986,57949.0,966,2025-10-23 21:51:02.886820,,,,,,,,,
+,,,,966,2025-10-23 21:54:13.541292,0.13388623297214508,0.002790127182379365,0.13388623297214508,0.13903656601905823,0.00207357294857502,0.13903656601905823,,,
+,,,,966,2025-10-23 21:54:42.198067,,,,,,,0.1378210186958313,0.0022060100454837084,0.1378210186958313
+0.1338946670293808,0.0010603365954011679,0.1338946670293808,57999.0,967,2025-10-23 22:01:44.823738,,,,,,,,,
+,,,,967,2025-10-23 22:06:34.975819,0.1347329318523407,0.00167262670584023,0.1347329318523407,0.14680801331996918,0.0026096554938703775,0.14680801331996918,,,
+,,,,967,2025-10-23 22:07:01.331438,,,,,,,0.13780122995376587,0.001974852290004492,0.13780122995376587
+0.14506182074546814,0.001275249058380723,0.14506182074546814,58049.0,968,2025-10-23 22:12:33.083248,,,,,,,,,
+,,,,968,2025-10-23 22:18:59.740039,0.1332303285598755,0.0015880423597991467,0.1332303285598755,0.1472565084695816,0.0023412907030433416,0.1472565084695816,,,
+,,,,968,2025-10-23 22:19:27.535427,,,,,,,0.13502837717533112,0.0019820050802081823,0.13502837717533112
+0.1520041823387146,0.002397452713921666,0.1520041823387146,58099.0,969,2025-10-23 22:23:23.633412,,,,,,,,,
+,,,,969,2025-10-23 22:31:31.423578,0.14415355026721954,0.002337477169930935,0.14415355026721954,0.15784305334091187,0.001839171163737774,0.15784305334091187,,,
+,,,,969,2025-10-23 22:32:00.829198,,,,,,,0.1413644254207611,0.0021780815441161394,0.1413644254207611
+0.13170947134494781,0.0008342448272742331,0.13170947134494781,58149.0,970,2025-10-23 22:34:18.212816,,,,,,,,,
+0.15226520597934723,0.00384343764744699,0.15226520597934723,58199.0,970,2025-10-23 22:42:27.368433,,,,,,,,,
+,,,,970,2025-10-23 22:44:02.506169,0.1437654048204422,0.003031365806236863,0.1437654048204422,0.1435781866312027,0.0020782575011253357,0.1435781866312027,,,
+,,,,970,2025-10-23 22:44:29.956446,,,,,,,0.13665936887264252,0.002156801288947463,0.13665936887264252
+0.14362114667892456,0.0015651686117053032,0.14362114667892456,58249.0,971,2025-10-23 22:53:15.769946,,,,,,,,,
+,,,,971,2025-10-23 22:56:29.355762,0.14506074786186218,0.002380230464041233,0.14506074786186218,0.12780168652534485,0.0011293861316516995,0.12780168652534485,,,
+,,,,971,2025-10-23 22:57:22.653667,,,,,,,0.14020976424217224,0.0018530536908656359,0.14020976424217224
+0.12850448489189148,0.0006359912804327905,0.12850448489189148,58299.0,972,2025-10-23 23:04:35.121743,,,,,,,,,
+,,,,972,2025-10-23 23:09:24.347324,0.14209583401679993,0.0019476329907774925,0.14209583401679993,0.1463223546743393,0.0016329138306900859,0.1463223546743393,,,
+,,,,972,2025-10-23 23:09:51.677753,,,,,,,0.13939683139324188,0.002165605314075947,0.13939683139324188
+0.14604823291301727,0.0009710468584671617,0.14604823291301727,58349.0,973,2025-10-23 23:15:25.262704,,,,,,,,,
+,,,,973,2025-10-23 23:21:54.490246,0.15127675235271454,0.002672610804438591,0.15127675235271454,0.14908474683761597,0.001815279945731163,0.14908474683761597,,,
+,,,,973,2025-10-23 23:22:22.115624,,,,,,,0.13953132927417755,0.0020355619490146637,0.13953132927417755
+0.14957353472709656,0.0012880635913461447,0.14957353472709656,58399.0,974,2025-10-23 23:26:19.012232,,,,,,,,,
+,,,,974,2025-10-23 23:34:22.282880,0.13863226771354675,0.003185954876244068,0.13863226771354675,0.1344468891620636,0.0017801944632083178,0.1344468891620636,,,
+,,,,974,2025-10-23 23:34:48.406244,,,,,,,0.139629065990448,0.0020923821721225977,0.139629065990448
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/tf/events.out.tfevents.1761169045.node-0.2007.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/tf/events.out.tfevents.1761169045.node-0.2007.0
new file mode 100644
index 0000000000000000000000000000000000000000..e2680000b4d8425d1b6d26512dd4e493feac1967
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_4/tf/events.out.tfevents.1761169045.node-0.2007.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:391716fc6210ca40d5ec96cf07bb8a38827bfefbb6c0fc411bd5e281353b1a8a
+size 113628
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..5987f2780b7c554cfc8b251b2065844c04c65cd7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 5, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-23 23:45:22.329215", "exp_hash": "testtube_v5"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..94b1708b73d0efbb42a849a5fa2b82ef63e5b896
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/metrics.csv
@@ -0,0 +1,58 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.10376232117414474,0.0011874426854774356,0.10376232117414474,58449.0,975,2025-10-23 23:48:45.859025,,,,,,,,,
+0.1376160979270935,0.0009893311653286219,0.1376160979270935,58499.0,975,2025-10-23 23:53:12.633468,,,,,,,,,
+,,,,975,2025-10-23 23:54:56.783826,0.146501362323761,0.002103132661432028,0.146501362323761,0.1440238356590271,0.0024038671981543303,0.1440238356590271,,,
+,,,,975,2025-10-23 23:55:42.844033,,,,,,,0.14002631604671478,0.0022802201565355062,0.14002631604671478
+0.11780519783496857,0.0008531212224625051,0.11780519783496857,58549.0,976,2025-10-24 00:01:35.671148,,,,,,,,,
+,,,,976,2025-10-24 00:03:47.535517,0.1490544229745865,0.0014403050299733877,0.1490544229745865,0.14137206971645355,0.002475745975971222,0.14137206971645355,,,
+,,,,976,2025-10-24 00:04:31.349664,,,,,,,0.1340680867433548,0.0018872945802286267,0.1340680867433548
+0.1268472671508789,0.0012182367499917746,0.1268472671508789,58599.0,977,2025-10-24 00:09:23.530722,,,,,,,,,
+,,,,977,2025-10-24 00:12:32.695560,0.1470133364200592,0.002303734654560685,0.1470133364200592,0.15435980260372162,0.002025018213316798,0.15435980260372162,,,
+,,,,977,2025-10-24 00:13:20.363321,,,,,,,0.13653665781021118,0.002189493039622903,0.13653665781021118
+0.12188297510147095,0.0012670970754697919,0.12188297510147095,58649.0,978,2025-10-24 00:17:28.708819,,,,,,,,,
+,,,,978,2025-10-24 00:21:42.658621,0.13395628333091736,0.0018379344837740064,0.13395628333091736,0.14981919527053833,0.0019876938313245773,0.14981919527053833,,,
+,,,,978,2025-10-24 00:22:28.691534,,,,,,,0.13910190761089325,0.0022085905075073242,0.13910190761089325
+0.16962584853172302,0.0013141128001734614,0.16962584853172302,58699.0,979,2025-10-24 00:25:35.533814,,,,,,,,,
+,,,,979,2025-10-24 00:30:45.246154,0.13679517805576324,0.0017422946402803063,0.13679517805576324,0.13949060440063477,0.0018563269404694438,0.13949060440063477,,,
+,,,,979,2025-10-24 00:31:27.340069,,,,,,,0.13735413551330566,0.002018246566876769,0.13735413551330566
+0.1376735121011734,0.001960964407771826,0.1376735121011734,58749.0,980,2025-10-24 00:33:18.747848,,,,,,,,,
+0.15060025453567505,0.0025492000859230757,0.15060025453567505,58799.0,980,2025-10-24 00:37:45.311842,,,,,,,,,
+,,,,980,2025-10-24 00:39:11.898990,0.1484805941581726,0.0024184961803257465,0.1484805941581726,0.13734416663646698,0.002988972468301654,0.13734416663646698,,,
+,,,,980,2025-10-24 00:39:54.146823,,,,,,,0.14063923060894012,0.0023303090129047632,0.14063923060894012
+0.13563629984855652,0.0008462193654850125,0.13563629984855652,58849.0,981,2025-10-24 00:45:54.536691,,,,,,,,,
+,,,,981,2025-10-24 00:48:03.836362,0.1521160751581192,0.003023835364729166,0.1521160751581192,0.14802315831184387,0.0021694430615752935,0.14802315831184387,,,
+,,,,981,2025-10-24 00:48:26.771754,,,,,,,0.13842804729938507,0.0020502880215644836,0.13842804729938507
+0.15325336158275604,0.004447381477802992,0.15325336158275604,58899.0,982,2025-10-24 00:53:20.763851,,,,,,,,,
+,,,,982,2025-10-24 00:56:39.024413,0.14677166938781738,0.0019485036609694362,0.14677166938781738,0.1409015953540802,0.002666572807356715,0.1409015953540802,,,
+,,,,982,2025-10-24 00:57:26.891483,,,,,,,0.13836072385311127,0.002137865638360381,0.13836072385311127
+0.1435658484697342,0.0015163833741098642,0.1435658484697342,58949.0,983,2025-10-24 01:01:42.832817,,,,,,,,,
+,,,,983,2025-10-24 01:05:40.612967,0.13949793577194214,0.00226168823428452,0.13949793577194214,0.13901643455028534,0.0031359530985355377,0.13901643455028534,,,
+,,,,983,2025-10-24 01:06:26.560305,,,,,,,0.14032447338104248,0.0019738911651074886,0.14032447338104248
+0.11443335562944412,0.0006982592167332768,0.11443335562944412,58999.0,984,2025-10-24 01:09:23.055176,,,,,,,,,
+,,,,984,2025-10-24 01:14:31.135024,0.15093085169792175,0.002014117781072855,0.15093085169792175,0.1469760686159134,0.0030132359825074673,0.1469760686159134,,,
+,,,,984,2025-10-24 01:14:54.223028,,,,,,,0.14017131924629211,0.00221004756167531,0.14017131924629211
+0.1557450294494629,0.001248041051439941,0.1557450294494629,59049.0,985,2025-10-24 01:16:56.419884,,,,,,,,,
+0.12099650502204895,0.0011680766474455595,0.12099650502204895,59099.0,985,2025-10-24 01:21:31.555348,,,,,,,,,
+,,,,985,2025-10-24 01:23:02.064220,0.1373196244239807,0.0021863861475139856,0.1373196244239807,0.14678868651390076,0.002605891553685069,0.14678868651390076,,,
+,,,,985,2025-10-24 01:23:26.980556,,,,,,,0.13840238749980927,0.0021030555944889784,0.13840238749980927
+0.14090432226657867,0.00397832877933979,0.14090432226657867,59149.0,986,2025-10-24 01:29:08.500359,,,,,,,,,
+,,,,986,2025-10-24 01:31:19.775677,0.1445513665676117,0.0015559731982648373,0.1445513665676117,0.14746913313865662,0.00246713706292212,0.14746913313865662,,,
+,,,,986,2025-10-24 01:31:43.289168,,,,,,,0.13629946112632751,0.002017610240727663,0.13629946112632751
+0.1304279863834381,0.0012789544416591525,0.1304279863834381,59199.0,987,2025-10-24 01:36:30.661618,,,,,,,,,
+,,,,987,2025-10-24 01:39:36.108681,0.15231899917125702,0.0023317642044276,0.15231899917125702,0.1502625197172165,0.0018090636003762484,0.1502625197172165,,,
+,,,,987,2025-10-24 01:39:59.926716,,,,,,,0.138188898563385,0.002381181577220559,0.138188898563385
+0.1373070627450943,0.0034957772586494684,0.1373070627450943,59249.0,988,2025-10-24 01:44:02.057406,,,,,,,,,
+,,,,988,2025-10-24 01:48:05.572552,0.1460200399160385,0.001884416793473065,0.1460200399160385,0.1406342089176178,0.002731925342231989,0.1406342089176178,,,
+,,,,988,2025-10-24 01:48:29.098137,,,,,,,0.1344173401594162,0.0022603103425353765,0.1344173401594162
+0.1569167524576187,0.0015630788402631879,0.1569167524576187,59299.0,989,2025-10-24 01:51:21.875532,,,,,,,,,
+,,,,989,2025-10-24 01:56:15.080944,0.1348661184310913,0.0021702225785702467,0.1348661184310913,0.13960318267345428,0.002977778436616063,0.13960318267345428,,,
+,,,,989,2025-10-24 01:56:39.077749,,,,,,,0.14086267352104187,0.002397906268015504,0.14086267352104187
+0.09795030951499939,0.0005347232217900455,0.09795030951499939,59349.0,990,2025-10-24 01:58:28.695591,,,,,,,,,
+0.11007256805896759,0.0005945079028606415,0.11007256805896759,59399.0,990,2025-10-24 02:04:27.058686,,,,,,,,,
+,,,,990,2025-10-24 02:05:56.264070,0.13908278942108154,0.001878201961517334,0.13908278942108154,0.14290684461593628,0.0021287184208631516,0.14290684461593628,,,
+,,,,990,2025-10-24 02:06:24.449504,,,,,,,0.13715395331382751,0.002044137567281723,0.13715395331382751
+0.1362304836511612,0.0027325700502842665,0.1362304836511612,59449.0,991,2025-10-24 02:11:51.822341,,,,,,,,,
+,,,,991,2025-10-24 02:14:13.581665,0.140048548579216,0.0014037684304639697,0.140048548579216,0.1472512185573578,0.0017766206292435527,0.1472512185573578,,,
+,,,,991,2025-10-24 02:14:37.483797,,,,,,,0.13666266202926636,0.0020140609703958035,0.13666266202926636
+0.1509564071893692,0.0018455510726198554,0.1509564071893692,59499.0,992,2025-10-24 02:19:31.329981,,,,,,,,,
+,,,,992,2025-10-24 02:22:31.795010,0.1403975784778595,0.0019323346205055714,0.1403975784778595,0.13499930500984192,0.0017993706278502941,0.13499930500984192,,,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/tf/events.out.tfevents.1761263122.node-0.1856.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/tf/events.out.tfevents.1761263122.node-0.1856.0
new file mode 100644
index 0000000000000000000000000000000000000000..83c7b97db89176d6094a89a5c6144f49b9fd9017
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_5/tf/events.out.tfevents.1761263122.node-0.1856.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c7047efc2fdb280032744c86115ea7fdd8a64b9c73ee45c2c95865cb1b179ea
+size 16486
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..a4f367b8924d8fec212a0c8d60dc3bc20eb4b279
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 6, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-24 02:56:57.492516", "exp_hash": "testtube_v6"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..5a742b46bcae83343671d7b1d354de4a799df4a7
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/metrics.csv
@@ -0,0 +1,26 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.15441398322582245,0.002840145491063595,0.15441398322582245,59499.0,992,2025-10-24 03:04:50.026670,,,,,,,,,
+,,,,992,2025-10-24 03:08:39.323894,0.14646078646183014,0.002105276333168149,0.14646078646183014,0.14388200640678406,0.0024024697486311197,0.14388200640678406,,,
+,,,,992,2025-10-24 03:09:35.164963,,,,,,,0.13825468719005585,0.002229604870080948,0.13825468719005585
+0.11315738409757614,0.0007083957316353917,0.11315738409757614,59549.0,993,2025-10-24 03:14:20.875935,,,,,,,,,
+,,,,993,2025-10-24 03:18:55.943681,0.14882779121398926,0.0014390697469934821,0.14882779121398926,0.14122608304023743,0.002474192762747407,0.14122608304023743,,,
+,,,,993,2025-10-24 03:19:52.206548,,,,,,,0.13841353356838226,0.0019776816479861736,0.13841353356838226
+0.12212955206632614,0.0007821907638572156,0.12212955206632614,59599.0,994,2025-10-24 03:23:07.400847,,,,,,,,,
+,,,,994,2025-10-24 03:29:02.380584,0.14696665108203888,0.00231094378978014,0.14696665108203888,0.1542108952999115,0.0020237055141478777,0.1542108952999115,,,
+,,,,994,2025-10-24 03:29:59.315498,,,,,,,0.13573606312274933,0.002119989600032568,0.13573606312274933
+0.13995066285133362,0.0018276870250701904,0.13995066285133362,59649.0,995,2025-10-24 03:32:10.039890,,,,,,,,,
+0.14861221611499786,0.0016502938233315945,0.14861221611499786,59699.0,995,2025-10-24 03:37:24.827081,,,,,,,,,
+,,,,995,2025-10-24 03:39:09.528957,0.13413377106189728,0.0018440637504681945,0.13413377106189728,0.14967529475688934,0.001986463787034154,0.14967529475688934,,,
+,,,,995,2025-10-24 03:40:11.189238,,,,,,,0.1395634412765503,0.002197933616116643,0.1395634412765503
+0.13518260419368744,0.0013862464111298323,0.13518260419368744,59749.0,996,2025-10-24 03:47:18.175031,,,,,,,,,
+,,,,996,2025-10-24 03:49:48.275252,0.1366690993309021,0.0017410059226676822,0.1366690993309021,0.13935106992721558,0.0018551669782027602,0.13935106992721558,,,
+,,,,996,2025-10-24 03:50:47.165223,,,,,,,0.1395457237958908,0.0019947877153754234,0.1395457237958908
+0.1148628294467926,0.001895926077850163,0.1148628294467926,59799.0,997,2025-10-24 03:56:37.534222,,,,,,,,,
+,,,,997,2025-10-24 04:00:04.438954,0.14820845425128937,0.002416043309494853,0.14820845425128937,0.13719691336154938,0.002987025771290064,0.13719691336154938,,,
+,,,,997,2025-10-24 04:01:08.797648,,,,,,,0.1378212720155716,0.0023184618912637234,0.1378212720155716
+0.12497390061616898,0.0007317858398891985,0.12497390061616898,59849.0,998,2025-10-24 04:05:40.035669,,,,,,,,,
+,,,,998,2025-10-24 04:10:28.864545,0.15207539498806,0.0030243913643062115,0.15207539498806,0.14787626266479492,0.002168182982131839,0.14787626266479492,,,
+,,,,998,2025-10-24 04:11:01.263927,,,,,,,0.1411110758781433,0.002077828859910369,0.1411110758781433
+0.15764649212360382,0.004788633435964584,0.15764649212360382,59899.0,999,2025-10-24 04:14:22.591767,,,,,,,,,
+,,,,999,2025-10-24 04:19:53.143035,0.14654281735420227,0.0019450937397778034,0.14654281735420227,0.14076517522335052,0.002665100386366248,0.14076517522335052,,,
+,,,,999,2025-10-24 04:20:54.025426,,,,,,,0.14018510282039642,0.0021877330727875233,0.14018510282039642
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/tf/events.out.tfevents.1761274618.node-0.4798.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/tf/events.out.tfevents.1761274618.node-0.4798.0
new file mode 100644
index 0000000000000000000000000000000000000000..b2e30e7c45eb194c9c7c19e2c808a3b07d3d426f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_6/tf/events.out.tfevents.1761274618.node-0.4798.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ac810efb31ad359df1d3442ce9b8e2cd24fb2ffcc22f64fb9ed1651fe0e067a
+size 7264
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..900691b41d041202582a76fd164ac2e7b3aba59f
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 7, "tags_path": "./logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-28 22:00:31.058428", "exp_hash": "testtube_v7"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/metrics.csv
@@ -0,0 +1 @@
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/tf/events.out.tfevents.1761688833.node-0.2119.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/tf/events.out.tfevents.1761688833.node-0.2119.0
new file mode 100644
index 0000000000000000000000000000000000000000..9dbee96e74d071733bc9ca6474b5274a59b76eb6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask/testtube/version_7/tf/events.out.tfevents.1761688833.node-0.2119.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ab18358f20cf446109c6a7bc48a50cc021d9008320488d67408429bae0f91359
+size 88
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/epoch=000024.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/epoch=000024.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..59608bbc9b82472f8052a2eaf03c5078c57e8379
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/epoch=000024.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5aa000fdc0bd4e468831e74ab3cde3d5d0aa525fb93c7cc445b33f098aac7eed
+size 7325158558
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..0511745621efd011295063e3900446f36dc0acd1
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c50672fe9883e376e0f26ef05c4e55bdb0f3a39f5cfcbec05adb6682f2cae5f
+size 7325158558
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..af576c4f4222ea130206951d1e6274cd32183a05
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-lightning.yaml
@@ -0,0 +1,12 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-28T21-59-42-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.5
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1b0338aead6c797df75ee541d54de45b0d63accf
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T03-06-33-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.5
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1b0338aead6c797df75ee541d54de45b0d63accf
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-26-38-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.5
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1b0338aead6c797df75ee541d54de45b0d63accf
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_2d_with_body_mask2/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7a7dab1599480e5a6916b98ec6bfe915d873b0d5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/configs/2025-10-29T06-50-09-project.yaml
@@ -0,0 +1,58 @@
+model:
+ base_learning_rate: 5.0e-07
+ target: ldm.models.diffusion.ddpm.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.5
+ use_ema: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 8
+ num_workers: 12
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..f3a4e80e896d9e74bb8aecb2d5408e1f18342b13
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-28 22:00:11.295334", "exp_hash": "testtube_v0"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2c774e7e3585841ecb66bb23a8e095aad11dfb7c
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/metrics.csv
@@ -0,0 +1,44 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.9308006167411804,0.006328666117042303,0.9308006167411804,49.0,0,2025-10-28 22:12:32.321104,,,,,,,,,
+0.8248870372772217,0.00485704280436039,0.8248870372772217,99.0,0,2025-10-28 22:20:08.435387,,,,,,,,,
+0.7291226387023926,0.004419628530740738,0.7291226387023926,149.0,0,2025-10-28 22:27:44.200715,,,,,,,,,
+,,,,0,2025-10-28 22:32:19.634806,0.7057442665100098,0.004881200846284628,0.7057442665100098,0.7366036176681519,0.005252678878605366,0.7366036176681519,,,
+,,,,0,2025-10-28 22:33:21.569766,,,,,,,0.8636050224304199,0.006393211428076029,0.8636050224304199
+0.6498528122901917,0.006078140810132027,0.6498528122901917,199.0,1,2025-10-28 22:41:36.645069,,,,,,,,,
+0.5669978260993958,0.0039938511326909065,0.5669978260993958,249.0,1,2025-10-28 22:49:13.255648,,,,,,,,,
+0.5180029273033142,0.002655648160725832,0.5180029273033142,299.0,1,2025-10-28 22:56:49.279813,,,,,,,,,
+,,,,1,2025-10-28 23:02:59.048566,0.5082671642303467,0.0038864908274263144,0.5082671642303467,0.5423380136489868,0.005225677043199539,0.5423380136489868,,,
+,,,,1,2025-10-28 23:04:01.897657,,,,,,,0.5978487133979797,0.005454601254314184,0.5978487133979797
+0.47975870966911316,0.006420143414288759,0.47975870966911316,349.0,2,2025-10-28 23:10:37.562506,,,,,,,,,
+0.42965826392173767,0.002505088457837701,0.42965826392173767,399.0,2,2025-10-28 23:18:15.961105,,,,,,,,,
+0.4051905870437622,0.0027605474460870028,0.4051905870437622,449.0,2,2025-10-28 23:25:53.020824,,,,,,,,,
+,,,,2,2025-10-28 23:33:27.360792,0.41036123037338257,0.004421724006533623,0.41036123037338257,0.43286117911338806,0.003919557668268681,0.43286117911338806,,,
+,,,,2,2025-10-28 23:34:32.737278,,,,,,,0.4488810896873474,0.004487758502364159,0.4488810896873474
+0.4011790454387665,0.00452469103038311,0.4011790454387665,499.0,3,2025-10-28 23:40:44.035414,,,,,,,,,
+0.3652472198009491,0.004205006640404463,0.3652472198009491,549.0,3,2025-10-28 23:51:40.527314,,,,,,,,,
+0.3643805682659149,0.004374014213681221,0.3643805682659149,599.0,3,2025-10-29 00:01:46.674435,,,,,,,,,
+,,,,3,2025-10-29 00:10:54.000832,0.3498455286026001,0.004479421302676201,0.3498455286026001,0.37157776951789856,0.003918090369552374,0.37157776951789856,,,
+,,,,3,2025-10-29 00:12:00.096631,,,,,,,0.37450432777404785,0.004115817602723837,0.37450432777404785
+0.34504032135009766,0.0032439308706671,0.34504032135009766,649.0,4,2025-10-29 00:17:19.208441,,,,,,,,,
+0.33045345544815063,0.004572540521621704,0.33045345544815063,699.0,4,2025-10-29 00:25:03.143851,,,,,,,,,
+0.3201521039009094,0.002511276863515377,0.3201521039009094,749.0,4,2025-10-29 00:33:12.733658,,,,,,,,,
+,,,,4,2025-10-29 00:44:14.048796,0.3274407982826233,0.004004297312349081,0.3274407982826233,0.33423900604248047,0.003936890512704849,0.33423900604248047,,,
+,,,,4,2025-10-29 00:45:18.623629,,,,,,,0.32804879546165466,0.003798361402004957,0.32804879546165466
+0.30016836524009705,0.005610479041934013,0.30016836524009705,799.0,5,2025-10-29 00:50:34.963761,,,,,,,,,
+0.33577167987823486,0.002287663985043764,0.33577167987823486,849.0,5,2025-10-29 00:58:11.027246,,,,,,,,,
+0.31735748052597046,0.0033484825398772955,0.31735748052597046,899.0,5,2025-10-29 01:06:55.292118,,,,,,,,,
+0.3124011754989624,0.010142073966562748,0.3124011754989624,949.0,5,2025-10-29 01:16:49.161550,,,,,,,,,
+,,,,5,2025-10-29 01:25:08.488633,0.3245115280151367,0.0056076948530972,0.3245115280151367,0.312978595495224,0.0034309702459722757,0.312978595495224,,,
+,,,,5,2025-10-29 01:26:14.726268,,,,,,,0.31032294034957886,0.004069593269377947,0.31032294034957886
+0.278347909450531,0.009343701414763927,0.278347909450531,999.0,6,2025-10-29 01:37:25.175876,,,,,,,,,
+0.3004944324493408,0.002899531275033951,0.3004944324493408,1049.0,6,2025-10-29 01:45:14.762152,,,,,,,,,
+0.2853686511516571,0.0014941416447982192,0.2853686511516571,1099.0,6,2025-10-29 01:52:52.768651,,,,,,,,,
+,,,,6,2025-10-29 01:57:57.606683,0.28671982884407043,0.004130441229790449,0.28671982884407043,0.2842036485671997,0.0035266587510704994,0.2842036485671997,,,
+,,,,6,2025-10-29 01:59:08.276090,,,,,,,0.2971835136413574,0.0037855978589504957,0.2971835136413574
+0.2772462069988251,0.004923250991851091,0.2772462069988251,1149.0,7,2025-10-29 02:06:57.472564,,,,,,,,,
+0.3215959668159485,0.0056651621125638485,0.3215959668159485,1199.0,7,2025-10-29 02:14:46.066537,,,,,,,,,
+0.29026827216148376,0.0017915136413648725,0.29026827216148376,1249.0,7,2025-10-29 02:24:31.114151,,,,,,,,,
+,,,,7,2025-10-29 02:30:52.586203,0.2885715961456299,0.0032384563237428665,0.2885715961456299,0.2989098131656647,0.004297069273889065,0.2989098131656647,,,
+,,,,7,2025-10-29 02:32:02.608150,,,,,,,0.28762364387512207,0.00409694155678153,0.28762364387512207
+0.29342150688171387,0.008097373880445957,0.29342150688171387,1299.0,8,2025-10-29 02:39:15.683347,,,,,,,,,
+0.31727340817451477,0.00843045860528946,0.31727340817451477,1349.0,8,2025-10-29 02:46:52.484226,,,,,,,,,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761688811.node-0.1903.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761688811.node-0.1903.0
new file mode 100644
index 0000000000000000000000000000000000000000..64487637f6c49c9a24df1cf3de6775f3460478a1
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761688811.node-0.1903.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f53d81d6eba8474edde7196ff60b1ef34c2fbf24b8dd23fc8764c75bd29adf7c
+size 11927
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..2fcc9c0a9a8024433bd81eff5d030fabae334e83
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 1, "tags_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 03:08:07.294144", "exp_hash": "testtube_v1"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c5f1ec3964f80b2efe9203d1ad2c8620785f55fa
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/metrics.csv
@@ -0,0 +1,32 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.29299309849739075,0.0030174613930284977,0.29299309849739075,1299.0,8,2025-10-29 03:15:56.712519,,,,,,,,,
+0.2922252118587494,0.0023969202302396297,0.2922252118587494,1349.0,8,2025-10-29 03:23:36.851501,,,,,,,,,
+0.2941399812698364,0.005256693344563246,0.2941399812698364,1399.0,8,2025-10-29 03:31:13.710718,,,,,,,,,
+,,,,8,2025-10-29 03:38:45.305139,0.2800214886665344,0.0029390372801572084,0.2800214886665344,0.28796035051345825,0.00320618087425828,0.28796035051345825,,,
+,,,,8,2025-10-29 03:39:57.847977,,,,,,,0.2833901643753052,0.0037843426689505577,0.2833901643753052
+0.2955283522605896,0.010838845744729042,0.2955283522605896,1449.0,9,2025-10-29 03:44:04.398558,,,,,,,,,
+0.25189337134361267,0.00123148737475276,0.25189337134361267,1499.0,9,2025-10-29 03:51:41.032600,,,,,,,,,
+0.3105628192424774,0.0034697900991886854,0.3105628192424774,1549.0,9,2025-10-29 03:59:20.254668,,,,,,,,,
+,,,,9,2025-10-29 04:07:39.576912,0.28061655163764954,0.0028339247219264507,0.28061655163764954,0.28824737668037415,0.004021476022899151,0.28824737668037415,,,
+,,,,9,2025-10-29 04:08:49.069342,,,,,,,0.28092116117477417,0.003946899902075529,0.28092116117477417
+0.26574164628982544,0.0023798642214387655,0.26574164628982544,1599.0,10,2025-10-29 04:11:29.246727,,,,,,,,,
+0.2814885973930359,0.002931951778009534,0.2814885973930359,1649.0,10,2025-10-29 04:19:08.580363,,,,,,,,,
+0.2732048034667969,0.004097959958016872,0.2732048034667969,1699.0,10,2025-10-29 04:26:44.849512,,,,,,,,,
+,,,,10,2025-10-29 04:36:33.137682,0.28593504428863525,0.003808710491284728,0.28593504428863525,0.2851716876029968,0.003219271544367075,0.2851716876029968,,,
+,,,,10,2025-10-29 04:37:41.417671,,,,,,,0.2754996418952942,0.0036609978415071964,0.2754996418952942
+0.2558787167072296,0.001514984993264079,0.2558787167072296,1749.0,11,2025-10-29 04:39:18.576969,,,,,,,,,
+0.29537761211395264,0.0023033053148537874,0.29537761211395264,1799.0,11,2025-10-29 04:46:55.834606,,,,,,,,,
+0.24447233974933624,0.003832491347566247,0.24447233974933624,1849.0,11,2025-10-29 04:54:35.162246,,,,,,,,,
+0.26224634051322937,0.0022914023138582706,0.26224634051322937,1899.0,11,2025-10-29 05:02:11.947236,,,,,,,,,
+,,,,11,2025-10-29 05:05:49.516027,0.2766827940940857,0.00409453921020031,0.2766827940940857,0.28249576687812805,0.003469745861366391,0.28249576687812805,,,
+,,,,11,2025-10-29 05:07:06.395235,,,,,,,0.27714183926582336,0.0036353198811411858,0.27714183926582336
+0.28004515171051025,0.006412958726286888,0.28004515171051025,1949.0,12,2025-10-29 05:14:32.501810,,,,,,,,,
+0.2683315575122833,0.004403076600283384,0.2683315575122833,1999.0,12,2025-10-29 05:22:10.581362,,,,,,,,,
+0.29113438725471497,0.004110926762223244,0.29113438725471497,2049.0,12,2025-10-29 05:29:50.460034,,,,,,,,,
+,,,,12,2025-10-29 05:34:47.509725,0.2821040749549866,0.0037574605084955692,0.2821040749549866,0.2782166004180908,0.0036448421888053417,0.2782166004180908,,,
+,,,,12,2025-10-29 05:36:01.544410,,,,,,,0.26974666118621826,0.003498889273032546,0.26974666118621826
+0.31576818227767944,0.0035027354024350643,0.31576818227767944,2099.0,13,2025-10-29 05:42:00.800168,,,,,,,,,
+0.30013307929039,0.006233688909560442,0.30013307929039,2149.0,13,2025-10-29 05:49:40.752522,,,,,,,,,
+0.2598050534725189,0.001927242730744183,0.2598050534725189,2199.0,13,2025-10-29 05:57:17.414380,,,,,,,,,
+,,,,13,2025-10-29 06:03:38.143698,0.29339948296546936,0.005414336454123259,0.29339948296546936,0.2755531966686249,0.0032305698841810226,0.2755531966686249,,,
+,,,,13,2025-10-29 06:04:51.503326,,,,,,,0.2728212773799896,0.003867820370942354,0.2728212773799896
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761707290.node-0.2045.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761707290.node-0.2045.0
new file mode 100644
index 0000000000000000000000000000000000000000..2356ce2c3428369c61cc619cf0e914c1f525950a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761707290.node-0.2045.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12cd8c81bb25570b8e8c528961c307a5cb3d97e8526dda8425d516dd9c865b31
+size 8641
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..7eb7ef302e1546cf00b829362369d0b4896bcb4a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 2, "tags_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 06:28:12.993751", "exp_hash": "testtube_v2"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..2cbb509f81eb37abf56b99c048905401f466844b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/metrics.csv
@@ -0,0 +1,2 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at
+0.28025203943252563,0.006237231660634279,0.28025203943252563,2249.0,14,2025-10-29 06:36:18.569020
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761719295.node-0.2231.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761719295.node-0.2231.0
new file mode 100644
index 0000000000000000000000000000000000000000..40db19106e90b79cceb9f71d862b8173fc4ef93e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761719295.node-0.2231.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b8f5b9ecb0213f37642526f9226d4ac678f2936ea92580ee62a26503997cb11
+size 355
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..e9ea9d375cbca4ac04b077903e0ae15c768d3c38
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 3, "tags_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv", "metrics_path": "./logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 06:52:01.576821", "exp_hash": "testtube_v3"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..4b4323c96b9e977b0cdf6049be20c8caf4c878f2
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/metrics.csv
@@ -0,0 +1,69 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.28025224804878235,0.006237243767827749,0.28025224804878235,2249.0,14,2025-10-29 06:58:58.324188,,,,,,,,,
+0.23338641226291656,0.001963970484212041,0.23338641226291656,2299.0,14,2025-10-29 07:06:35.492880,,,,,,,,,
+0.24020206928253174,0.0016378265572711825,0.24020206928253174,2349.0,14,2025-10-29 07:14:14.371397,,,,,,,,,
+,,,,14,2025-10-29 07:22:20.154462,0.2667611241340637,0.0028624804690480232,0.2667611241340637,0.27322977781295776,0.0031214156188070774,0.27322977781295776,,,
+,,,,14,2025-10-29 07:23:31.529805,,,,,,,0.2690940201282501,0.0036953468807041645,0.2690940201282501
+0.2718985080718994,0.003714757738634944,0.2718985080718994,2399.0,15,2025-10-29 07:26:51.469591,,,,,,,,,
+0.2522512972354889,0.001727023278363049,0.2522512972354889,2449.0,15,2025-10-29 07:34:30.958025,,,,,,,,,
+0.2526806592941284,0.0016466873930767179,0.2526806592941284,2499.0,15,2025-10-29 07:42:06.981266,,,,,,,,,
+,,,,15,2025-10-29 07:51:09.602636,0.2687002718448639,0.0027643393259495497,0.2687002718448639,0.2756917476654053,0.003943558782339096,0.2756917476654053,,,
+,,,,15,2025-10-29 07:52:18.588780,,,,,,,0.2687661945819855,0.003871033200994134,0.2687661945819855
+0.28131940960884094,0.0022365611512213945,0.28131940960884094,2549.0,16,2025-10-29 07:54:17.497142,,,,,,,,,
+0.28379419445991516,0.0021378458477556705,0.28379419445991516,2599.0,16,2025-10-29 08:01:54.151266,,,,,,,,,
+0.2808891832828522,0.005863854195922613,0.2808891832828522,2649.0,16,2025-10-29 08:09:33.085538,,,,,,,,,
+0.23594607412815094,0.0016317968256771564,0.23594607412815094,2699.0,16,2025-10-29 08:17:09.020419,,,,,,,,,
+,,,,16,2025-10-29 08:19:59.392741,0.2746652364730835,0.0037394403479993343,0.2746652364730835,0.27403759956359863,0.0031519669573754072,0.27403759956359863,,,
+,,,,16,2025-10-29 08:21:14.780490,,,,,,,0.263849139213562,0.003589056199416518,0.263849139213562
+0.26228490471839905,0.0017951783956959844,0.26228490471839905,2749.0,17,2025-10-29 08:29:28.313809,,,,,,,,,
+0.2993653118610382,0.002928863512352109,0.2993653118610382,2799.0,17,2025-10-29 08:37:06.773887,,,,,,,,,
+0.23479822278022766,0.0016238512471318245,0.23479822278022766,2849.0,17,2025-10-29 08:44:48.974307,,,,,,,,,
+,,,,17,2025-10-29 08:48:58.612764,0.2672156095504761,0.004034475889056921,0.2672156095504761,0.2724722623825073,0.0034070834517478943,0.2724722623825073,,,
+,,,,17,2025-10-29 08:50:15.338974,,,,,,,0.2663474380970001,0.0035630655474960804,0.2663474380970001
+0.26812759041786194,0.002761941170319915,0.26812759041786194,2899.0,18,2025-10-29 08:57:09.153021,,,,,,,,,
+0.2646152973175049,0.0017754154978320003,0.2646152973175049,2949.0,18,2025-10-29 09:04:50.005618,,,,,,,,,
+0.2679634094238281,0.0037166818510740995,0.2679634094238281,2999.0,18,2025-10-29 09:12:28.315883,,,,,,,,,
+,,,,18,2025-10-29 09:18:10.926024,0.2730451226234436,0.003702708752825856,0.2730451226234436,0.26896587014198303,0.00358859496191144,0.26896587014198303,,,
+,,,,18,2025-10-29 09:19:31.495195,,,,,,,0.26082974672317505,0.0034386208280920982,0.26082974672317505
+0.2738322615623474,0.003503467421978712,0.2738322615623474,3049.0,19,2025-10-29 09:24:54.712295,,,,,,,,,
+0.26292335987091064,0.002881529973819852,0.26292335987091064,3099.0,19,2025-10-29 09:32:32.730098,,,,,,,,,
+0.2521493136882782,0.001837820978835225,0.2521493136882782,3149.0,19,2025-10-29 09:40:15.030629,,,,,,,,,
+,,,,19,2025-10-29 09:47:16.194617,0.2848205864429474,0.00535541633144021,0.2848205864429474,0.2669333219528198,0.0031788458582013845,0.2669333219528198,,,
+,,,,19,2025-10-29 09:48:29.995183,,,,,,,0.26427602767944336,0.003800317645072937,0.26427602767944336
+0.2820777893066406,0.006870495621114969,0.2820777893066406,3199.0,20,2025-10-29 09:52:39.596131,,,,,,,,,
+0.25695398449897766,0.004492610227316618,0.25695398449897766,3249.0,20,2025-10-29 10:00:23.062599,,,,,,,,,
+0.2275150865316391,0.0013611833564937115,0.2275150865316391,3299.0,20,2025-10-29 10:08:03.265990,,,,,,,,,
+,,,,20,2025-10-29 10:16:25.610573,0.25564366579055786,0.003944345284253359,0.25564366579055786,0.24932712316513062,0.0033249277621507645,0.24932712316513062,,,
+,,,,20,2025-10-29 10:17:46.666449,,,,,,,0.262421578168869,0.0035721079912036657,0.262421578168869
+0.2349717766046524,0.0031173143070191145,0.2349717766046524,3349.0,21,2025-10-29 10:20:32.985294,,,,,,,,,
+0.2417479157447815,0.005033372901380062,0.2417479157447815,3399.0,21,2025-10-29 10:28:11.192546,,,,,,,,,
+0.2719259262084961,0.0021913559176027775,0.2719259262084961,3449.0,21,2025-10-29 10:35:52.368976,,,,,,,,,
+,,,,21,2025-10-29 10:45:31.474290,0.26194918155670166,0.003081680741161108,0.26194918155670166,0.27002018690109253,0.004113640636205673,0.27002018690109253,,,
+,,,,21,2025-10-29 10:46:10.157716,,,,,,,0.25933706760406494,0.003925226163119078,0.25933706760406494
+0.25752440094947815,0.0027036836836487055,0.25752440094947815,3499.0,22,2025-10-29 10:47:31.997160,,,,,,,,,
+0.24753634631633759,0.00902416743338108,0.24753634631633759,3549.0,22,2025-10-29 10:55:11.825436,,,,,,,,,
+0.227713480591774,0.005910711362957954,0.227713480591774,3599.0,22,2025-10-29 11:02:48.115979,,,,,,,,,
+0.27743440866470337,0.005769934039562941,0.27743440866470337,3649.0,22,2025-10-29 11:10:26.268989,,,,,,,,,
+,,,,22,2025-10-29 11:13:54.353773,0.26263195276260376,0.0038304829504340887,0.26263195276260376,0.2653336226940155,0.00428529130294919,0.2653336226940155,,,
+,,,,22,2025-10-29 11:15:09.120137,,,,,,,0.2597608268260956,0.003737117862328887,0.2597608268260956
+0.2704359292984009,0.004767104052007198,0.2704359292984009,3699.0,23,2025-10-29 11:22:50.600903,,,,,,,,,
+0.26160621643066406,0.0018353447085246444,0.26160621643066406,3749.0,23,2025-10-29 11:30:29.952402,,,,,,,,,
+0.2648807466030121,0.00572700472548604,0.2648807466030121,3799.0,23,2025-10-29 11:38:07.399574,,,,,,,,,
+,,,,23,2025-10-29 11:42:57.594305,0.26144638657569885,0.004269758705049753,0.26144638657569885,0.259914755821228,0.0030581436585634947,0.259914755821228,,,
+,,,,23,2025-10-29 11:44:09.087953,,,,,,,0.25868362188339233,0.003284803358837962,0.25868362188339233
+0.28206050395965576,0.007199052255600691,0.28206050395965576,3849.0,24,2025-10-29 11:50:23.933645,,,,,,,,,
+0.1959376037120819,0.001275394344702363,0.1959376037120819,3899.0,24,2025-10-29 11:58:01.560799,,,,,,,,,
+0.2649981677532196,0.006269399076700211,0.2649981677532196,3949.0,24,2025-10-29 12:05:41.769490,,,,,,,,,
+,,,,24,2025-10-29 12:11:53.300807,0.26520925760269165,0.0034105766098946333,0.26520925760269165,0.2580748498439789,0.0030249045230448246,0.2580748498439789,,,
+,,,,24,2025-10-29 12:13:03.849456,,,,,,,0.2578713297843933,0.003760785097256303,0.2578713297843933
+0.3026350140571594,0.004008096177130938,0.3026350140571594,3999.0,25,2025-10-29 12:17:51.141168,,,,,,,,,
+0.2576989531517029,0.003577882656827569,0.2576989531517029,4049.0,25,2025-10-29 12:25:32.434852,,,,,,,,,
+0.23856480419635773,0.002212916035205126,0.23856480419635773,4099.0,25,2025-10-29 12:33:12.107510,,,,,,,,,
+,,,,25,2025-10-29 12:40:44.436625,0.2554593086242676,0.004082811996340752,0.2554593086242676,0.2651488482952118,0.003882819088175893,0.2651488482952118,,,
+,,,,25,2025-10-29 12:41:22.651708,,,,,,,0.25831303000450134,0.0038923174142837524,0.25831303000450134
+0.2532699704170227,0.0061458684504032135,0.2532699704170227,4149.0,26,2025-10-29 12:44:53.025560,,,,,,,,,
+0.3324514925479889,0.009342190809547901,0.3324514925479889,4199.0,26,2025-10-29 12:52:30.410772,,,,,,,,,
+0.24816586077213287,0.0036555835977196693,0.24816586077213287,4249.0,26,2025-10-29 13:00:10.450370,,,,,,,,,
+,,,,26,2025-10-29 13:08:58.681216,0.26376157999038696,0.005282838363200426,0.26376157999038696,0.26967310905456543,0.0035121098626405,0.26967310905456543,,,
+,,,,26,2025-10-29 13:09:38.005458,,,,,,,0.2560555040836334,0.003768912050873041,0.2560555040836334
+0.25542667508125305,0.0030242586508393288,0.25542667508125305,4299.0,27,2025-10-29 13:11:59.357851,,,,,,,,,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761720724.node-0.2056.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761720724.node-0.2056.0
new file mode 100644
index 0000000000000000000000000000000000000000..11376c6818c0c79951b9d6350357795c257f6f98
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_2d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761720724.node-0.2056.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f692328e8235d5fe74a705b9a8814031fc0496d7d4938c3267f8f19e5d8dc56
+size 18842
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_11_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_11_a_2_fused.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..2929ba3e730307629ad4f7dcd1f7ffdef81ebb86
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_11_a_2_fused.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0626df9b033e16e0d0f455186cbbd04ad2cd09f8fd26e2b8860af412ecb411ad
+size 123232957
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_15_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_15_a_2_fused.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..f775ef3926e0670e959f8dce70e00f6910d88347
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_15_a_2_fused.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:970989f5633f578dbae5b7a62653a4397ff33710a6808babdaf5f8958d09724e
+size 110637285
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_5_a_2_fused.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..96c8dd287a38b8c441533198c34903ed629022ef
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest/valid_5_a_2_fused.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a462a40143dd19a80ae7f3e102821e2b95b31aee799f4c7a4b9af450e1a43bb0
+size 77012166
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new/valid_5_a_2_fused.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..178a383606178004bb2074ff815be46ec3ae2494
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new/valid_5_a_2_fused.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6252cebfbb46c318b381dba9f165786d0160303b8d21826ce9c734c1dfe042c6
+size 78024036
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..ec50e13fdbbd8bd281de68b0b0bd6f7f596b1704
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60a6647da65139a75af7625a46c539607310876744a4ea27922e34ce9f46d273
+size 77533000
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused_16.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused_16.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..ef7c81016ea62325b3cf04273a4ec5c3ce64bc57
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new2/valid_5_a_2_fused_16.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f749e5025ce15122215c14dda895f00a809ba985e23bee442325a29a07efddf
+size 77807468
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d5c0722abed7bed389a4e38c705f1224427b8dda
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16005896068e1dc5a5c416c3fd7e2bca5a9caecddeb2bb5529c3dd4b6c354274
+size 77898163
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused_.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused_.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..02ae1efe6a5a0bd5eae36665cde00f95b0d6c36e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_new3/valid_5_a_2_fused_.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b404e32b10425562dc5fbbb26d7671231aa0ea6bf386da32ec66f088318bca50
+size 84188752
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..ad30991a265a3c15d0b8ed2e53cbe50a5b23f302
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb9e07e8bd1acfb1a96f6578f200c7c79468d4be1c4a704168d6b3a68349cc39
+size 77497764
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1_/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1_/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..fc4c88e7c8703d4506168c73e17fcb2a49691d96
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v1_/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9638ae31ddb1813969127d4fc690f319c797a76cd1a3bc0bbddc287723ffa3c
+size 17319896
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o1/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..cccbd40a96eaefd9a9b192860298111e944fd9c0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o1/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b8fd2319949437d1aa24f5cd2bb1e7c623977ca1eadb153c9d40add4b40456a
+size 77905308
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o4/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..711688e8d6c16fe06fc2da98bab326ebcfa2b7c5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o4/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0dd02e58e4284b4281037de035ed0e58f2eea071d277462d4ee2a3969170f2bf
+size 77488969
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o8/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o8/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d4e9dbd2a58972fabc546308937ca4157fd7a5ae
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v2_o8/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c48e46006bd23d7e11069a7366c05f20329ffbb956d52a4af7291e0f3ef366a5
+size 76231345
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o4/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..219f97e4a8ea3903c26388b90003b87d50c939f9
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o4/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:137a6fb157e888e346402d0f6cc49750ec8f1b3e69f25452fccef0b047accd4f
+size 78639815
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o8/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o8/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..1fc8980f9ebc16518d1a9ed7a8e3e4c19c56c599
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v3_o8/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:364a7db925a6002218902d906b33674b1862de494978935611e3b5262b465863
+size 77862544
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o1/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0c5e2ff458e57d4fc2c88de8a6d011bd00aa130e
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o1/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10bf3194eec722056191c98fa6caac17736f0cac40315584083e8b74990d8928
+size 78120684
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o4/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..fff47204bb2f1ccb2fa83acd8477a4b46f2705e5
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v4_o4/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:323866070a2e072771730c6ac99f9118182ca2cd1188bb4afa138106dffe3fcb
+size 78581180
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o1/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o1/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..4e872b489ed72fa0a3ac45cf226c246b8c2a32aa
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o1/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:056b0284da6470b3be3be68266e18ef8b9668da5725ddb298ad2fbd39fd7a80a
+size 78793088
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o4/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o4/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..4e0b1dadfa09b2dcdb25646cc5865b73a83ec4a2
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o4/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8dcebbf6609aa74862b0896c275b55a24b5b29dbea0069b9a7b6c5d61d4d1714
+size 78629093
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o8/valid_5_a_2.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o8/valid_5_a_2.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..f00b147ebb1097b1f0a001b1ce7d376f20205581
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/3d_results_step20_train_latest_v5_o8/valid_5_a_2.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43471275fbea80c2ea1bec4f458d76820c4f877990490c163beeaa6525ab61f1
+size 78276868
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000034.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000034.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..f604221d82724c473acb5e92b98352ce351fa283
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000034.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24aeab411b49630bb05f3b41f28cb6fe1f2d5d3da6245f865359d08ea72cfb09
+size 3016767037
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000042.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000042.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..b839f9324ef576c0d7189183e1614ba5677f24ab
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000042.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c4a49ba081d0d3a4a042713dcb1e778157be32d58123b1fee2b7d282d3ce3cdc
+size 3016767037
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000070.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000070.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..a2d2258bc64f7e8d7de8036c886543a8fc884c53
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/epoch=000070.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41ee72f6789af9f8adc04e1a9f366101108c2b2cd4211941ae91349d70433007
+size 3016767292
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/last.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..a2d2258bc64f7e8d7de8036c886543a8fc884c53
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/checkpoints/last.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41ee72f6789af9f8adc04e1a9f366101108c2b2cd4211941ae91349d70433007
+size 3016767292
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..af576c4f4222ea130206951d1e6274cd32183a05
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-lightning.yaml
@@ -0,0 +1,12 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/configs/2025-10-27T05-24-24-project.yaml
@@ -0,0 +1,61 @@
+model:
+ base_learning_rate: 5.0e-06
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: false
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
+ load_only_unet: true
+ fix_t: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..a760d72b4ac3a90cb19c5daf499184dd7fae7db6
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-27 05:24:55.199695", "exp_hash": "testtube_v0"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f4f95cec31eed70d1b109f5b2d331e51d137c157
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/metrics.csv
@@ -0,0 +1,313 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.1298452466726303,0.0006014347309246659,0.1298452466726303,49.0,0,2025-10-27 05:31:12.276913,,,,,,,,,
+0.1585102528333664,0.0010996264172717929,0.1585102528333664,99.0,0,2025-10-27 05:35:41.226047,,,,,,,,,
+,,,,0,2025-10-27 05:39:16.584788,0.20284207165241241,0.002162378979846835,0.20284207165241241,0.2670551836490631,0.00709892250597477,0.2670551836490631,,,
+,,,,0,2025-10-27 05:39:38.231154,,,,,,,0.1651953011751175,0.0035241355653852224,0.1651953011751175
+0.07409920543432236,0.00029173525399528444,0.07409920543432236,149.0,1,2025-10-27 05:42:49.311238,,,,,,,,,
+0.3116034269332886,0.005188298411667347,0.3116034269332886,199.0,1,2025-10-27 05:47:18.507543,,,,,,,,,
+,,,,1,2025-10-27 05:52:01.273421,0.14672797918319702,0.0012981414329260588,0.14672797918319702,0.16219495236873627,0.009456607513129711,0.16219495236873627,,,
+,,,,1,2025-10-27 05:52:25.853867,,,,,,,0.17582637071609497,0.0024525232147425413,0.17582637071609497
+0.02844018116593361,0.00010678218677639961,0.02844018116593361,249.0,2,2025-10-27 05:53:53.265840,,,,,,,,,
+0.2337605059146881,0.0014854605542495847,0.2337605059146881,299.0,2,2025-10-27 05:58:23.357924,,,,,,,,,
+0.1513783484697342,0.0005861567333340645,0.1513783484697342,349.0,2,2025-10-27 06:02:52.594756,,,,,,,,,
+,,,,2,2025-10-27 06:04:55.372785,0.17894774675369263,0.002510916907340288,0.17894774675369263,0.14331302046775818,0.0007318095304071903,0.14331302046775818,,,
+,,,,2,2025-10-27 06:05:19.917343,,,,,,,0.17921996116638184,0.0022347604390233755,0.17921996116638184
+0.08109879493713379,0.0002756498579401523,0.08109879493713379,399.0,3,2025-10-27 06:09:30.448698,,,,,,,,,
+0.025011951103806496,9.445133764529601e-05,0.025011951103806496,449.0,3,2025-10-27 06:13:59.512022,,,,,,,,,
+,,,,3,2025-10-27 06:17:50.562109,0.13869450986385345,0.0010713210795074701,0.13869450986385345,0.1614726483821869,0.0013446861412376165,0.1614726483821869,,,
+,,,,3,2025-10-27 06:18:16.561164,,,,,,,0.15808095037937164,0.0023440797813236713,0.15808095037937164
+0.15505565702915192,0.0007021644851192832,0.15505565702915192,499.0,4,2025-10-27 06:21:01.363734,,,,,,,,,
+0.2634284794330597,0.0011740716872736812,0.2634284794330597,549.0,4,2025-10-27 06:25:31.670184,,,,,,,,,
+0.15077055990695953,0.0005586837069131434,0.15077055990695953,599.0,4,2025-10-27 06:30:00.030301,,,,,,,,,
+,,,,4,2025-10-27 06:31:16.554057,0.21596403419971466,0.004229461774230003,0.21596403419971466,0.16498808562755585,0.0019715630915015936,0.16498808562755585,,,
+,,,,4,2025-10-27 06:31:30.850775,,,,,,,0.1680423766374588,0.002216966589912772,0.1680423766374588
+0.09997399896383286,0.0004182553675491363,0.09997399896383286,649.0,5,2025-10-27 06:36:34.594450,,,,,,,,,
+0.1758166253566742,0.0015757213113829494,0.1758166253566742,699.0,5,2025-10-27 06:41:03.583270,,,,,,,,,
+,,,,5,2025-10-27 06:44:02.533710,0.16704435646533966,0.00923468079417944,0.16704435646533966,0.1550769805908203,0.0006645738612860441,0.1550769805908203,,,
+,,,,5,2025-10-27 06:44:28.213261,,,,,,,0.17925021052360535,0.003420442109927535,0.17925021052360535
+0.13451509177684784,0.0009249026770703495,0.13451509177684784,749.0,6,2025-10-27 06:47:46.635986,,,,,,,,,
+0.22053448855876923,0.001058618538081646,0.22053448855876923,799.0,6,2025-10-27 06:52:15.928779,,,,,,,,,
+,,,,6,2025-10-27 06:56:59.899014,0.12650758028030396,0.001425603753887117,0.12650758028030396,0.18155081570148468,0.012803117744624615,0.18155081570148468,,,
+,,,,6,2025-10-27 06:57:13.195866,,,,,,,0.16785600781440735,0.003014898858964443,0.16785600781440735
+0.2569628655910492,0.004349532537162304,0.2569628655910492,849.0,7,2025-10-27 06:58:41.093492,,,,,,,,,
+0.18001416325569153,0.000824119197204709,0.18001416325569153,899.0,7,2025-10-27 07:03:10.670729,,,,,,,,,
+0.1529233753681183,0.0015380680561065674,0.1529233753681183,949.0,7,2025-10-27 07:07:41.256375,,,,,,,,,
+,,,,7,2025-10-27 07:09:48.874858,0.17006336152553558,0.0012573186540976167,0.17006336152553558,0.20333285629749298,0.0014493640046566725,0.20333285629749298,,,
+,,,,7,2025-10-27 07:10:01.995830,,,,,,,0.1773422807455063,0.005547262728214264,0.1773422807455063
+0.14939774572849274,0.0015161449555307627,0.14939774572849274,999.0,8,2025-10-27 07:14:13.370399,,,,,,,,,
+0.15834538638591766,0.0006147972890175879,0.15834538638591766,1049.0,8,2025-10-27 07:18:43.577152,,,,,,,,,
+,,,,8,2025-10-27 07:22:36.625797,0.1332847774028778,0.0027998017612844706,0.1332847774028778,0.18437211215496063,0.0014514365466311574,0.18437211215496063,,,
+,,,,8,2025-10-27 07:22:50.097970,,,,,,,0.15758247673511505,0.003280793549492955,0.15758247673511505
+0.123996302485466,0.00042743535595946014,0.123996302485466,1099.0,9,2025-10-27 07:25:11.734423,,,,,,,,,
+0.2900485098361969,0.002068539382889867,0.2900485098361969,1149.0,9,2025-10-27 07:29:41.526990,,,,,,,,,
+0.19586646556854248,0.0007797113503329456,0.19586646556854248,1199.0,9,2025-10-27 07:34:09.735007,,,,,,,,,
+,,,,9,2025-10-27 07:35:25.223109,0.1723030060529709,0.0018432143842801452,0.1723030060529709,0.1622532457113266,0.0009857920231297612,0.1622532457113266,,,
+,,,,9,2025-10-27 07:35:39.374728,,,,,,,0.18952541053295135,0.006292914040386677,0.18952541053295135
+0.2469610869884491,0.026113854721188545,0.2469610869884491,1249.0,10,2025-10-27 07:40:36.729831,,,,,,,,,
+0.18840758502483368,0.0020047586876899004,0.18840758502483368,1299.0,10,2025-10-27 07:45:05.942112,,,,,,,,,
+,,,,10,2025-10-27 07:48:03.814925,0.17313937842845917,0.0010817964794114232,0.17313937842845917,0.15646174550056458,0.0014046860160306096,0.15646174550056458,,,
+,,,,10,2025-10-27 07:48:30.477607,,,,,,,0.1627252995967865,0.0034794644452631474,0.1627252995967865
+0.07462508976459503,0.00025923113571479917,0.07462508976459503,1349.0,11,2025-10-27 07:52:11.484170,,,,,,,,,
+0.21500767767429352,0.0009247582638636231,0.21500767767429352,1399.0,11,2025-10-27 07:56:41.490725,,,,,,,,,
+,,,,11,2025-10-27 08:01:36.994135,0.20096832513809204,0.002560109132900834,0.20096832513809204,0.15472285449504852,0.0008078760001808405,0.15472285449504852,,,
+,,,,11,2025-10-27 08:02:02.888853,,,,,,,0.1736760139465332,0.0032039228826761246,0.1736760139465332
+0.040505800396203995,0.0001532338937977329,0.040505800396203995,1449.0,12,2025-10-27 08:03:37.561019,,,,,,,,,
+0.11307891458272934,0.0003926253702957183,0.11307891458272934,1499.0,12,2025-10-27 08:08:07.225322,,,,,,,,,
+0.3430405855178833,0.01271831151098013,0.3430405855178833,1549.0,12,2025-10-27 08:12:36.633840,,,,,,,,,
+,,,,12,2025-10-27 08:14:42.714319,0.169397234916687,0.0055740876123309135,0.169397234916687,0.13689714670181274,0.0007451949641108513,0.13689714670181274,,,
+,,,,12,2025-10-27 08:15:08.432876,,,,,,,0.16721124947071075,0.0017329922411590815,0.16721124947071075
+0.17400385439395905,0.0011732201091945171,0.17400385439395905,1599.0,13,2025-10-27 08:19:17.105909,,,,,,,,,
+0.15525752305984497,0.002389961387962103,0.15525752305984497,1649.0,13,2025-10-27 08:23:46.987425,,,,,,,,,
+,,,,13,2025-10-27 08:27:42.543058,0.1839127540588379,0.009538248181343079,0.1839127540588379,0.1812489777803421,0.0010723319137468934,0.1812489777803421,,,
+,,,,13,2025-10-27 08:27:56.846400,,,,,,,0.16328932344913483,0.0023505212739109993,0.16328932344913483
+0.15298977494239807,0.004517129622399807,0.15298977494239807,1699.0,14,2025-10-27 08:30:18.055043,,,,,,,,,
+0.29246029257774353,0.003894355846568942,0.29246029257774353,1749.0,14,2025-10-27 08:34:47.552565,,,,,,,,,
+0.13359546661376953,0.0004998319200240076,0.13359546661376953,1799.0,14,2025-10-27 08:39:16.638293,,,,,,,,,
+,,,,14,2025-10-27 08:40:32.139274,0.18062709271907806,0.0017660226440057158,0.18062709271907806,0.15325219929218292,0.0011971208732575178,0.15325219929218292,,,
+,,,,14,2025-10-27 08:40:57.988160,,,,,,,0.17239665985107422,0.0027567839715629816,0.17239665985107422
+0.12721045315265656,0.0009179686312563717,0.12721045315265656,1849.0,15,2025-10-27 08:46:02.694365,,,,,,,,,
+0.15921461582183838,0.004264966584742069,0.15921461582183838,1899.0,15,2025-10-27 08:50:32.248033,,,,,,,,,
+,,,,15,2025-10-27 08:53:31.401540,0.1682918816804886,0.010296469554305077,0.1682918816804886,0.19464407861232758,0.002194339409470558,0.19464407861232758,,,
+,,,,15,2025-10-27 08:53:45.526014,,,,,,,0.1640947312116623,0.00267243105918169,0.1640947312116623
+0.2074774205684662,0.0009274556068703532,0.2074774205684662,1949.0,16,2025-10-27 08:57:05.883068,,,,,,,,,
+0.08828552067279816,0.0005419761291705072,0.08828552067279816,1999.0,16,2025-10-27 09:01:35.775861,,,,,,,,,
+,,,,16,2025-10-27 09:06:25.514848,0.2152213156223297,0.0036022120621055365,0.2152213156223297,0.17380663752555847,0.0017946362495422363,0.17380663752555847,,,
+,,,,16,2025-10-27 09:06:39.312005,,,,,,,0.1609775424003601,0.0037128545809537172,0.1609775424003601
+0.1029215008020401,0.0003863114689011127,0.1029215008020401,2049.0,17,2025-10-27 09:08:07.642093,,,,,,,,,
+0.25490766763687134,0.0010712622897699475,0.25490766763687134,2099.0,17,2025-10-27 09:12:37.670898,,,,,,,,,
+0.28447335958480835,0.0033935662358999252,0.28447335958480835,2149.0,17,2025-10-27 09:17:07.294776,,,,,,,,,
+,,,,17,2025-10-27 09:19:11.723286,0.1436058133840561,0.004136963281780481,0.1436058133840561,0.1850101798772812,0.013283642008900642,0.1850101798772812,,,
+,,,,17,2025-10-27 09:19:26.828306,,,,,,,0.16779954731464386,0.0037222295068204403,0.16779954731464386
+0.23886007070541382,0.0016600446542724967,0.23886007070541382,2199.0,18,2025-10-27 09:23:32.933678,,,,,,,,,
+0.13604837656021118,0.0005710365949198604,0.13604837656021118,2249.0,18,2025-10-27 09:28:02.428289,,,,,,,,,
+,,,,18,2025-10-27 09:31:57.995732,0.16180285811424255,0.0014284554636105895,0.16180285811424255,0.17713171243667603,0.0013680463889613748,0.17713171243667603,,,
+,,,,18,2025-10-27 09:32:11.809975,,,,,,,0.15336215496063232,0.002245004288852215,0.15336215496063232
+0.16161294281482697,0.001396313076838851,0.16161294281482697,2299.0,19,2025-10-27 09:34:35.380296,,,,,,,,,
+0.08799533545970917,0.0002962336002383381,0.08799533545970917,2349.0,19,2025-10-27 09:39:06.082503,,,,,,,,,
+0.1320529282093048,0.0004972692113369703,0.1320529282093048,2399.0,19,2025-10-27 09:43:35.717818,,,,,,,,,
+,,,,19,2025-10-27 09:44:47.061094,0.10434176027774811,0.0003910154337063432,0.10434176027774811,0.12969020009040833,0.0015893771778792143,0.12969020009040833,,,
+,,,,19,2025-10-27 09:45:19.822357,,,,,,,0.15551190078258514,0.002082358580082655,0.15551190078258514
+0.27346211671829224,0.0021777255460619926,0.27346211671829224,2449.0,20,2025-10-27 09:50:29.754022,,,,,,,,,
+0.15594252943992615,0.001152145559899509,0.15594252943992615,2499.0,20,2025-10-27 09:54:59.734109,,,,,,,,,
+,,,,20,2025-10-27 09:58:04.157846,0.1706395447254181,0.0010657027596607804,0.1706395447254181,0.20598040521144867,0.002647663466632366,0.20598040521144867,,,
+,,,,20,2025-10-27 09:58:18.069911,,,,,,,0.16657111048698425,0.002206070814281702,0.16657111048698425
+0.08622602373361588,0.000402401463361457,0.08622602373361588,2549.0,21,2025-10-27 10:01:31.527045,,,,,,,,,
+0.36302685737609863,0.016261326149106026,0.36302685737609863,2599.0,21,2025-10-27 10:06:00.776668,,,,,,,,,
+,,,,21,2025-10-27 10:10:52.972327,0.21442434191703796,0.010853443294763565,0.21442434191703796,0.1860639601945877,0.0026045823469758034,0.1860639601945877,,,
+,,,,21,2025-10-27 10:11:06.530356,,,,,,,0.16834105551242828,0.002792720915749669,0.16834105551242828
+0.20623737573623657,0.00388341979123652,0.20623737573623657,2649.0,22,2025-10-27 10:12:34.182971,,,,,,,,,
+0.120920829474926,0.0012306420831009746,0.120920829474926,2699.0,22,2025-10-27 10:17:04.148997,,,,,,,,,
+0.07855714112520218,0.0002688698295969516,0.07855714112520218,2749.0,22,2025-10-27 10:21:34.599641,,,,,,,,,
+,,,,22,2025-10-27 10:23:41.080851,0.16689707338809967,0.0022489619441330433,0.16689707338809967,0.171307772397995,0.00420751515775919,0.171307772397995,,,
+,,,,22,2025-10-27 10:23:55.236698,,,,,,,0.1592588722705841,0.002083785133436322,0.1592588722705841
+0.20821735262870789,0.0011211599921807647,0.20821735262870789,2799.0,23,2025-10-27 10:28:02.938884,,,,,,,,,
+0.14007015526294708,0.000577647122554481,0.14007015526294708,2849.0,23,2025-10-27 10:32:33.048070,,,,,,,,,
+,,,,23,2025-10-27 10:36:28.563312,0.21240665018558502,0.0036644607316702604,0.21240665018558502,0.17126286029815674,0.0013381459284573793,0.17126286029815674,,,
+,,,,23,2025-10-27 10:36:42.500506,,,,,,,0.16343829035758972,0.0022181475069373846,0.16343829035758972
+0.17767156660556793,0.0006884810281917453,0.17767156660556793,2899.0,24,2025-10-27 10:39:08.428585,,,,,,,,,
+0.2233976423740387,0.0013188689481467009,0.2233976423740387,2949.0,24,2025-10-27 10:43:38.682096,,,,,,,,,
+0.02787759155035019,0.00010550743900239468,0.02787759155035019,2999.0,24,2025-10-27 10:48:07.585227,,,,,,,,,
+,,,,24,2025-10-27 10:49:18.625331,0.18075811862945557,0.0018703780369833112,0.18075811862945557,0.192221537232399,0.0017800593050196767,0.192221537232399,,,
+,,,,24,2025-10-27 10:49:32.697037,,,,,,,0.17414623498916626,0.0026634871028363705,0.17414623498916626
+0.16344775259494781,0.0013355349656194448,0.16344775259494781,3049.0,25,2025-10-27 10:54:31.821258,,,,,,,,,
+0.11726658046245575,0.0005740410997532308,0.11726658046245575,3099.0,25,2025-10-27 10:59:01.374654,,,,,,,,,
+,,,,25,2025-10-27 11:02:04.035033,0.18548014760017395,0.002119482960551977,0.18548014760017395,0.14643660187721252,0.0026196674443781376,0.14643660187721252,,,
+,,,,25,2025-10-27 11:02:18.749566,,,,,,,0.1668120175600052,0.0031453934498131275,0.1668120175600052
+0.11578721553087234,0.00043708228622563183,0.11578721553087234,3149.0,26,2025-10-27 11:05:36.947379,,,,,,,,,
+0.2275756597518921,0.00118865049444139,0.2275756597518921,3199.0,26,2025-10-27 11:10:08.010076,,,,,,,,,
+,,,,26,2025-10-27 11:15:01.552232,0.14603647589683533,0.0007449063123203814,0.14603647589683533,0.17834016680717468,0.0012934375554323196,0.17834016680717468,,,
+,,,,26,2025-10-27 11:15:15.634911,,,,,,,0.17398996651172638,0.0019332267111167312,0.17398996651172638
+0.2725699245929718,0.0025580613873898983,0.2725699245929718,3249.0,27,2025-10-27 11:16:44.760786,,,,,,,,,
+0.20005731284618378,0.0015300001250579953,0.20005731284618378,3299.0,27,2025-10-27 11:21:15.119377,,,,,,,,,
+0.10907832533121109,0.0004885902162641287,0.10907832533121109,3349.0,27,2025-10-27 11:25:45.451293,,,,,,,,,
+,,,,27,2025-10-27 11:27:50.652960,0.17021194100379944,0.003043586853891611,0.17021194100379944,0.14157404005527496,0.0012630230048671365,0.14157404005527496,,,
+,,,,27,2025-10-27 11:28:16.170071,,,,,,,0.15943481028079987,0.002847998170182109,0.15943481028079987
+0.02189214713871479,8.368305134354159e-05,0.02189214713871479,3399.0,28,2025-10-27 11:32:22.490163,,,,,,,,,
+0.13926483690738678,0.0024356951471418142,0.13926483690738678,3449.0,28,2025-10-27 11:36:52.908239,,,,,,,,,
+,,,,28,2025-10-27 11:40:48.671976,0.19008027017116547,0.013073833659291267,0.19008027017116547,0.16996866464614868,0.004876305349171162,0.16996866464614868,,,
+,,,,28,2025-10-27 11:41:02.342855,,,,,,,0.15137049555778503,0.001522017759270966,0.15137049555778503
+0.3171122074127197,0.0025885826908051968,0.3171122074127197,3499.0,29,2025-10-27 11:43:27.528933,,,,,,,,,
+0.1382300704717636,0.0008780040079727769,0.1382300704717636,3549.0,29,2025-10-27 11:47:57.693803,,,,,,,,,
+0.19342558085918427,0.0007191367330960929,0.19342558085918427,3599.0,29,2025-10-27 11:52:26.617329,,,,,,,,,
+,,,,29,2025-10-27 11:53:38.382927,0.1507851928472519,0.0006327972514554858,0.1507851928472519,0.15300250053405762,0.0007310818182304502,0.15300250053405762,,,
+,,,,29,2025-10-27 11:53:52.825752,,,,,,,0.1789836287498474,0.0028862275648862123,0.1789836287498474
+0.1355489194393158,0.0027574896812438965,0.1355489194393158,3649.0,30,2025-10-27 11:58:55.144022,,,,,,,,,
+0.06387698650360107,0.00022625309065915644,0.06387698650360107,3699.0,30,2025-10-27 12:03:24.958575,,,,,,,,,
+,,,,30,2025-10-27 12:06:27.895789,0.19833387434482574,0.002348431386053562,0.19833387434482574,0.2083660364151001,0.0021264534443616867,0.2083660364151001,,,
+,,,,30,2025-10-27 12:06:41.556301,,,,,,,0.16684935986995697,0.0020123273134231567,0.16684935986995697
+0.22699810564517975,0.005606844089925289,0.22699810564517975,3749.0,31,2025-10-27 12:09:58.525894,,,,,,,,,
+0.3097147047519684,0.04623788595199585,0.3097147047519684,3799.0,31,2025-10-27 12:14:28.589147,,,,,,,,,
+,,,,31,2025-10-27 12:19:17.522546,0.18899503350257874,0.0020027265418320894,0.18899503350257874,0.16432969272136688,0.0011077403323724866,0.16432969272136688,,,
+,,,,31,2025-10-27 12:19:31.695635,,,,,,,0.17819032073020935,0.003932780586183071,0.17819032073020935
+0.2465432733297348,0.003056964371353388,0.2465432733297348,3849.0,32,2025-10-27 12:20:54.981103,,,,,,,,,
+0.03407081961631775,0.00013051327550783753,0.03407081961631775,3899.0,32,2025-10-27 12:25:25.030194,,,,,,,,,
+0.14326651394367218,0.000615552591625601,0.14326651394367218,3949.0,32,2025-10-27 12:29:54.797247,,,,,,,,,
+,,,,32,2025-10-27 12:31:59.665389,0.19592541456222534,0.0031949474941939116,0.19592541456222534,0.1455051600933075,0.0008391818846575916,0.1455051600933075,,,
+,,,,32,2025-10-27 12:32:13.147415,,,,,,,0.16256166994571686,0.0018331115134060383,0.16256166994571686
+0.17925187945365906,0.0009570110705681145,0.17925187945365906,3999.0,33,2025-10-27 12:36:34.962642,,,,,,,,,
+0.18811555206775665,0.0018970168894156814,0.18811555206775665,4049.0,33,2025-10-27 12:41:05.512167,,,,,,,,,
+,,,,33,2025-10-27 12:44:57.353610,0.1397705227136612,0.0012120103929191828,0.1397705227136612,0.13768160343170166,0.0020991584751755,0.13768160343170166,,,
+,,,,33,2025-10-27 12:45:23.161759,,,,,,,0.16064657270908356,0.0019575629848986864,0.16064657270908356
+0.08405924588441849,0.0003355279623065144,0.08405924588441849,4099.0,34,2025-10-27 12:47:50.439090,,,,,,,,,
+0.05540543422102928,0.000194275111425668,0.05540543422102928,4149.0,34,2025-10-27 12:52:21.175392,,,,,,,,,
+0.117362380027771,0.00044739225995726883,0.117362380027771,4199.0,34,2025-10-27 12:56:50.641714,,,,,,,,,
+,,,,34,2025-10-27 12:58:01.174641,0.11993244290351868,0.0007771917153149843,0.11993244290351868,0.10557252168655396,0.0004361116443760693,0.10557252168655396,,,
+,,,,34,2025-10-27 12:58:28.593727,,,,,,,0.1629304140806198,0.0024017132818698883,0.1629304140806198
+0.245383158326149,0.0011993233347311616,0.245383158326149,4249.0,35,2025-10-27 13:03:31.574186,,,,,,,,,
+0.22202780842781067,0.0016710080672055483,0.22202780842781067,4299.0,35,2025-10-27 13:08:02.071885,,,,,,,,,
+,,,,35,2025-10-27 13:11:03.616848,0.1267116367816925,0.0006415504612959921,0.1267116367816925,0.1550823599100113,0.0017036545323207974,0.1550823599100113,,,
+,,,,35,2025-10-27 13:11:17.361585,,,,,,,0.17329180240631104,0.002822452923282981,0.17329180240631104
+0.19355829060077667,0.0008424551342613995,0.19355829060077667,4349.0,36,2025-10-27 13:14:34.181536,,,,,,,,,
+0.047442708164453506,0.00016453792341053486,0.047442708164453506,4399.0,36,2025-10-27 13:19:04.407098,,,,,,,,,
+,,,,36,2025-10-27 13:23:55.021721,0.16556787490844727,0.0029691189993172884,0.16556787490844727,0.16106297075748444,0.0012550834799185395,0.16106297075748444,,,
+,,,,36,2025-10-27 13:24:09.115564,,,,,,,0.1656416356563568,0.0016729059861972928,0.1656416356563568
+0.16002975404262543,0.0006310612661764026,0.16002975404262543,4449.0,37,2025-10-27 13:25:42.891352,,,,,,,,,
+0.2829585671424866,0.0022557671181857586,0.2829585671424866,4499.0,37,2025-10-27 13:30:12.882385,,,,,,,,,
+0.09344431757926941,0.0003775424265768379,0.09344431757926941,4549.0,37,2025-10-27 13:34:43.016525,,,,,,,,,
+,,,,37,2025-10-27 13:36:53.574236,0.15883499383926392,0.0014733666321262717,0.15883499383926392,0.16510038077831268,0.001677793450653553,0.16510038077831268,,,
+,,,,37,2025-10-27 13:37:07.661501,,,,,,,0.167654350399971,0.0017817444168031216,0.167654350399971
+0.2679121792316437,0.001788676017895341,0.2679121792316437,4599.0,38,2025-10-27 13:41:15.927203,,,,,,,,,
+0.11072906106710434,0.00037610679282806814,0.11072906106710434,4649.0,38,2025-10-27 13:45:46.726641,,,,,,,,,
+,,,,38,2025-10-27 13:49:37.489342,0.191322460770607,0.003846260951831937,0.191322460770607,0.19454599916934967,0.0022170802112668753,0.19454599916934967,,,
+,,,,38,2025-10-27 13:49:51.322888,,,,,,,0.1664920598268509,0.003919551149010658,0.1664920598268509
+0.1392512172460556,0.0005090077174827456,0.1392512172460556,4699.0,39,2025-10-27 13:52:08.460934,,,,,,,,,
+0.2106075882911682,0.0011718320893123746,0.2106075882911682,4749.0,39,2025-10-27 13:56:38.708256,,,,,,,,,
+0.07239311933517456,0.000252999656368047,0.07239311933517456,4799.0,39,2025-10-27 14:01:07.701147,,,,,,,,,
+,,,,39,2025-10-27 14:02:24.066955,0.19256487488746643,0.005325481295585632,0.19256487488746643,0.16176044940948486,0.002861269749701023,0.16176044940948486,,,
+,,,,39,2025-10-27 14:02:38.087583,,,,,,,0.17400260269641876,0.003880089847370982,0.17400260269641876
+0.0662844255566597,0.00022926418751012534,0.0662844255566597,4849.0,40,2025-10-27 14:07:40.122605,,,,,,,,,
+0.1313895583152771,0.00045982139999978244,0.1313895583152771,4899.0,40,2025-10-27 14:12:09.603722,,,,,,,,,
+,,,,40,2025-10-27 14:15:12.830746,0.18247249722480774,0.001616910332813859,0.18247249722480774,0.15967391431331635,0.001173869357444346,0.15967391431331635,,,
+,,,,40,2025-10-27 14:15:27.062639,,,,,,,0.17462316155433655,0.002839226508513093,0.17462316155433655
+0.29481348395347595,0.002842765999957919,0.29481348395347595,4949.0,41,2025-10-27 14:18:42.217068,,,,,,,,,
+0.09275586158037186,0.0003562112688086927,0.09275586158037186,4999.0,41,2025-10-27 14:23:11.690594,,,,,,,,,
+,,,,41,2025-10-27 14:27:57.643131,0.16274426877498627,0.0016264610458165407,0.16274426877498627,0.15865196287631989,0.0019192040199413896,0.15865196287631989,,,
+,,,,41,2025-10-27 14:28:11.209456,,,,,,,0.16817837953567505,0.0023333204444497824,0.16817837953567505
+0.179660364985466,0.0013207198353484273,0.179660364985466,5049.0,42,2025-10-27 14:29:34.935394,,,,,,,,,
+0.054544541984796524,0.0002058010286418721,0.054544541984796524,5099.0,42,2025-10-27 14:34:04.791601,,,,,,,,,
+0.205445796251297,0.0011917883530259132,0.205445796251297,5149.0,42,2025-10-27 14:38:35.048807,,,,,,,,,
+,,,,42,2025-10-27 14:40:39.005183,0.1275867372751236,0.012111793272197247,0.1275867372751236,0.10266478359699249,0.00039702016511000693,0.10266478359699249,,,
+,,,,42,2025-10-27 14:41:05.685668,,,,,,,0.16838331520557404,0.003624981502071023,0.16838331520557404
+0.25403884053230286,0.016667496412992477,0.25403884053230286,5199.0,43,2025-10-27 14:45:18.995139,,,,,,,,,
+0.099150151014328,0.00033647919190116227,0.099150151014328,5249.0,43,2025-10-27 14:49:49.099767,,,,,,,,,
+,,,,43,2025-10-27 14:53:44.086177,0.18373697996139526,0.010325754061341286,0.18373697996139526,0.1542864590883255,0.002169597428292036,0.1542864590883255,,,
+,,,,43,2025-10-27 14:53:59.162341,,,,,,,0.16554081439971924,0.0018146102083846927,0.16554081439971924
+0.16040298342704773,0.000724183046258986,0.16040298342704773,5299.0,44,2025-10-27 14:56:22.674436,,,,,,,,,
+0.12377054244279861,0.0004128299478907138,0.12377054244279861,5349.0,44,2025-10-27 15:00:54.123343,,,,,,,,,
+0.15809619426727295,0.001218520337715745,0.15809619426727295,5399.0,44,2025-10-27 15:05:53.260851,,,,,,,,,
+,,,,44,2025-10-27 15:07:39.664320,0.1425066739320755,0.0007565981359221041,0.1425066739320755,0.17493411898612976,0.001736625679768622,0.17493411898612976,,,
+,,,,44,2025-10-27 15:07:52.851924,,,,,,,0.17406253516674042,0.002941759303212166,0.17406253516674042
+0.061750587075948715,0.000216164713492617,0.061750587075948715,5449.0,45,2025-10-27 15:12:55.806818,,,,,,,,,
+0.24988065659999847,0.001526137930341065,0.24988065659999847,5499.0,45,2025-10-27 15:17:31.391246,,,,,,,,,
+,,,,45,2025-10-27 15:20:38.881746,0.14767245948314667,0.002253773855045438,0.14767245948314667,0.17531819641590118,0.001687054056674242,0.17531819641590118,,,
+,,,,45,2025-10-27 15:20:53.019630,,,,,,,0.169733464717865,0.0021567002404481173,0.169733464717865
+0.12544886767864227,0.0005376505432650447,0.12544886767864227,5549.0,46,2025-10-27 15:24:12.672472,,,,,,,,,
+0.11396551132202148,0.0006049254443496466,0.11396551132202148,5599.0,46,2025-10-27 15:28:42.836326,,,,,,,,,
+,,,,46,2025-10-27 15:33:29.153233,0.19892260432243347,0.0021312925964593887,0.19892260432243347,0.22961919009685516,0.0037152250297367573,0.22961919009685516,,,
+,,,,46,2025-10-27 15:33:43.465232,,,,,,,0.17479471862316132,0.0032908457797020674,0.17479471862316132
+0.16464440524578094,0.0009970545070245862,0.16464440524578094,5649.0,47,2025-10-27 15:35:13.197403,,,,,,,,,
+0.12172585725784302,0.0009225652902387083,0.12172585725784302,5699.0,47,2025-10-27 15:39:43.160880,,,,,,,,,
+0.15752674639225006,0.0006403616280294955,0.15752674639225006,5749.0,47,2025-10-27 15:44:12.678824,,,,,,,,,
+,,,,47,2025-10-27 15:46:23.428147,0.19300009310245514,0.00470071192830801,0.19300009310245514,0.20136766135692596,0.002087427070364356,0.20136766135692596,,,
+,,,,47,2025-10-27 15:46:37.237891,,,,,,,0.16491685807704926,0.0025722808204591274,0.16491685807704926
+0.2751973569393158,0.0020951463375240564,0.2751973569393158,5799.0,48,2025-10-27 15:50:50.088847,,,,,,,,,
+0.029876014217734337,0.00011799748608609661,0.029876014217734337,5849.0,48,2025-10-27 15:55:20.689010,,,,,,,,,
+,,,,48,2025-10-27 15:59:13.813742,0.1574224829673767,0.002536999061703682,0.1574224829673767,0.1940365433692932,0.0022753088269382715,0.1940365433692932,,,
+,,,,48,2025-10-27 15:59:28.255854,,,,,,,0.1653682291507721,0.0034705735743045807,0.1653682291507721
+0.13533033430576324,0.0004949224530719221,0.13533033430576324,5899.0,49,2025-10-27 16:01:54.831174,,,,,,,,,
+0.24001500010490417,0.0010279071284458041,0.24001500010490417,5949.0,49,2025-10-27 16:06:25.524156,,,,,,,,,
+0.24794186651706696,0.0011946639278903604,0.24794186651706696,5999.0,49,2025-10-27 16:10:54.700234,,,,,,,,,
+,,,,49,2025-10-27 16:12:05.638440,0.14612190425395966,0.0009709753794595599,0.14612190425395966,0.17097342014312744,0.0011474188650026917,0.17097342014312744,,,
+,,,,49,2025-10-27 16:12:19.871628,,,,,,,0.15100446343421936,0.001625975128263235,0.15100446343421936
+0.23263560235500336,0.0013289771741256118,0.23263560235500336,6049.0,50,2025-10-27 16:17:22.239047,,,,,,,,,
+0.0886964499950409,0.0003048554644919932,0.0886964499950409,6099.0,50,2025-10-27 16:21:52.319458,,,,,,,,,
+,,,,50,2025-10-27 16:24:52.569542,0.16195037961006165,0.001721561304293573,0.16195037961006165,0.2125624120235443,0.0018573686247691512,0.2125624120235443,,,
+,,,,50,2025-10-27 16:25:06.511636,,,,,,,0.17437250912189484,0.004131419584155083,0.17437250912189484
+0.14746715128421783,0.002864117966964841,0.14746715128421783,6149.0,51,2025-10-27 16:28:19.732834,,,,,,,,,
+0.30090686678886414,0.0030355353374034166,0.30090686678886414,6199.0,51,2025-10-27 16:32:49.674532,,,,,,,,,
+,,,,51,2025-10-27 16:37:36.119751,0.16855297982692719,0.00199651881121099,0.16855297982692719,0.14248798787593842,0.001370396465063095,0.14248798787593842,,,
+,,,,51,2025-10-27 16:37:49.284949,,,,,,,0.164894700050354,0.0013830248499289155,0.164894700050354
+0.13136403262615204,0.0009586015366949141,0.13136403262615204,6249.0,52,2025-10-27 16:39:18.633612,,,,,,,,,
+0.1142529770731926,0.000846677168738097,0.1142529770731926,6299.0,52,2025-10-27 16:43:48.296495,,,,,,,,,
+0.12838537991046906,0.0004329466028138995,0.12838537991046906,6349.0,52,2025-10-27 16:48:18.048592,,,,,,,,,
+,,,,52,2025-10-27 16:50:29.646009,0.17536033689975739,0.005832868628203869,0.17536033689975739,0.1904989778995514,0.003185803070664406,0.1904989778995514,,,
+,,,,52,2025-10-27 16:50:43.957236,,,,,,,0.1609644889831543,0.00197890168055892,0.1609644889831543
+0.09714115411043167,0.00034673887421377003,0.09714115411043167,6399.0,53,2025-10-27 16:54:54.239602,,,,,,,,,
+0.13504177331924438,0.00048143963795155287,0.13504177331924438,6449.0,53,2025-10-27 16:59:25.466750,,,,,,,,,
+,,,,53,2025-10-27 17:03:17.500825,0.13584575057029724,0.0008482997072860599,0.13584575057029724,0.12936677038669586,0.000628774578217417,0.12936677038669586,,,
+,,,,53,2025-10-27 17:03:42.529436,,,,,,,0.16338147222995758,0.002060709521174431,0.16338147222995758
+0.2578313648700714,0.0021862646099179983,0.2578313648700714,6499.0,54,2025-10-27 17:06:05.568444,,,,,,,,,
+0.17254598438739777,0.011192538775503635,0.17254598438739777,6549.0,54,2025-10-27 17:10:36.241603,,,,,,,,,
+0.108099065721035,0.0004266513278707862,0.108099065721035,6599.0,54,2025-10-27 17:15:05.976831,,,,,,,,,
+,,,,54,2025-10-27 17:16:17.771014,0.19213539361953735,0.004294245503842831,0.19213539361953735,0.17373670637607574,0.0010887505486607552,0.17373670637607574,,,
+,,,,54,2025-10-27 17:16:31.343282,,,,,,,0.1723950207233429,0.0026808849070221186,0.1723950207233429
+0.09542767703533173,0.0003182794607710093,0.09542767703533173,6649.0,55,2025-10-27 17:21:38.876886,,,,,,,,,
+0.17640890181064606,0.0009242944070138037,0.17640890181064606,6699.0,55,2025-10-27 17:26:08.440664,,,,,,,,,
+,,,,55,2025-10-27 17:29:08.653462,0.16861127316951752,0.003111595055088401,0.16861127316951752,0.19289939105510712,0.0018571886466816068,0.19289939105510712,,,
+,,,,55,2025-10-27 17:29:22.512790,,,,,,,0.1576293706893921,0.0018544603371992707,0.1576293706893921
+0.16373859345912933,0.000769244332332164,0.16373859345912933,6749.0,56,2025-10-27 17:32:42.394190,,,,,,,,,
+0.08836157619953156,0.00029621223802678287,0.08836157619953156,6799.0,56,2025-10-27 17:37:12.868833,,,,,,,,,
+,,,,56,2025-10-27 17:42:02.409188,0.1618533730506897,0.0012726495042443275,0.1618533730506897,0.15763163566589355,0.0021561640314757824,0.15763163566589355,,,
+,,,,56,2025-10-27 17:42:16.102155,,,,,,,0.15683160722255707,0.002113153226673603,0.15683160722255707
+0.29334938526153564,0.005524361506104469,0.29334938526153564,6849.0,57,2025-10-27 17:43:48.562776,,,,,,,,,
+0.04082636907696724,0.0001480717764934525,0.04082636907696724,6899.0,57,2025-10-27 17:48:19.261153,,,,,,,,,
+0.1388634741306305,0.0005150202778168023,0.1388634741306305,6949.0,57,2025-10-27 17:52:49.620325,,,,,,,,,
+,,,,57,2025-10-27 17:54:54.315457,0.19366247951984406,0.0017777334433048964,0.19366247951984406,0.25349298119544983,0.008263235911726952,0.25349298119544983,,,
+,,,,57,2025-10-27 17:55:08.851104,,,,,,,0.16280511021614075,0.0022622544784098864,0.16280511021614075
+0.06746803224086761,0.00023741570475976914,0.06746803224086761,6999.0,58,2025-10-27 17:59:21.611609,,,,,,,,,
+0.17584535479545593,0.0007142274989746511,0.17584535479545593,7049.0,58,2025-10-27 18:03:52.813481,,,,,,,,,
+,,,,58,2025-10-27 18:07:47.460384,0.15181633830070496,0.0016533986199647188,0.15181633830070496,0.19354316592216492,0.0060872361063957214,0.19354316592216492,,,
+,,,,58,2025-10-27 18:08:00.474246,,,,,,,0.16210372745990753,0.003613704117015004,0.16210372745990753
+0.41231194138526917,0.006943796295672655,0.41231194138526917,7099.0,59,2025-10-27 18:10:18.436765,,,,,,,,,
+0.038276705890893936,0.00014115859812591225,0.038276705890893936,7149.0,59,2025-10-27 18:14:48.238567,,,,,,,,,
+0.1386144608259201,0.0005916814552620053,0.1386144608259201,7199.0,59,2025-10-27 18:19:17.335532,,,,,,,,,
+,,,,59,2025-10-27 18:20:29.213214,0.17551371455192566,0.007199620828032494,0.17551371455192566,0.19865606725215912,0.0026304039638489485,0.19865606725215912,,,
+,,,,59,2025-10-27 18:20:43.252497,,,,,,,0.1837506890296936,0.004112333990633488,0.1837506890296936
+0.06576766073703766,0.00022659763635601848,0.06576766073703766,7249.0,60,2025-10-27 18:25:48.319968,,,,,,,,,
+0.049898672848939896,0.00017885655688587576,0.049898672848939896,7299.0,60,2025-10-27 18:30:18.777270,,,,,,,,,
+,,,,60,2025-10-27 18:33:23.325147,0.20033089816570282,0.003216282930225134,0.20033089816570282,0.1569557636976242,0.00277024251408875,0.1569557636976242,,,
+,,,,60,2025-10-27 18:33:36.690197,,,,,,,0.16186818480491638,0.002600492676720023,0.16186818480491638
+0.1534891575574875,0.0008849793812260032,0.1534891575574875,7349.0,61,2025-10-27 18:36:51.596573,,,,,,,,,
+0.14094769954681396,0.0005316796596162021,0.14094769954681396,7399.0,61,2025-10-27 18:41:22.362323,,,,,,,,,
+,,,,61,2025-10-27 18:46:12.205772,0.15896712243556976,0.0010372726246714592,0.15896712243556976,0.15069790184497833,0.001218264689669013,0.15069790184497833,,,
+,,,,61,2025-10-27 18:46:26.454973,,,,,,,0.16025704145431519,0.0022572858724743128,0.16025704145431519
+0.1028832271695137,0.0005034111673012376,0.1028832271695137,7449.0,62,2025-10-27 18:48:01.223592,,,,,,,,,
+0.10300292074680328,0.0007572243339382112,0.10300292074680328,7499.0,62,2025-10-27 18:52:31.410319,,,,,,,,,
+0.17995570600032806,0.0031818316783756018,0.17995570600032806,7549.0,62,2025-10-27 18:57:02.501953,,,,,,,,,
+,,,,62,2025-10-27 18:59:09.283307,0.1958155632019043,0.0025321822613477707,0.1958155632019043,0.15685519576072693,0.008095300756394863,0.15685519576072693,,,
+,,,,62,2025-10-27 18:59:23.606164,,,,,,,0.16275137662887573,0.002626826986670494,0.16275137662887573
+0.16077478229999542,0.0006486873026005924,0.16077478229999542,7599.0,63,2025-10-27 19:03:44.439221,,,,,,,,,
+0.23214155435562134,0.07311443984508514,0.23214155435562134,7649.0,63,2025-10-27 19:08:15.137754,,,,,,,,,
+,,,,63,2025-10-27 19:12:13.285570,0.16963686048984528,0.0007742613670416176,0.16963686048984528,0.17130374908447266,0.00806969590485096,0.17130374908447266,,,
+,,,,63,2025-10-27 19:12:26.933057,,,,,,,0.15388208627700806,0.0029932563193142414,0.15388208627700806
+0.1071929931640625,0.00041910583968274295,0.1071929931640625,7699.0,64,2025-10-27 19:14:52.102199,,,,,,,,,
+0.24029137194156647,0.0014921160181984305,0.24029137194156647,7749.0,64,2025-10-27 19:19:23.626009,,,,,,,,,
+0.011281102895736694,5.3044619562570006e-05,0.011281102895736694,7799.0,64,2025-10-27 19:23:53.832436,,,,,,,,,
+,,,,64,2025-10-27 19:25:10.332442,0.215567484498024,0.002593456534668803,0.215567484498024,0.14971041679382324,0.0010091153671965003,0.14971041679382324,,,
+,,,,64,2025-10-27 19:25:24.487598,,,,,,,0.1553637832403183,0.002746754325926304,0.1553637832403183
+0.09047552198171616,0.00038931352901272476,0.09047552198171616,7849.0,65,2025-10-27 19:30:29.418505,,,,,,,,,
+0.060654155910015106,0.00021556652791332453,0.060654155910015106,7899.0,65,2025-10-27 19:34:59.853647,,,,,,,,,
+,,,,65,2025-10-27 19:38:03.922014,0.1472652703523636,0.001185466069728136,0.1472652703523636,0.19754436612129211,0.0013759612338617444,0.19754436612129211,,,
+,,,,65,2025-10-27 19:38:17.981512,,,,,,,0.1650662124156952,0.0043617128394544125,0.1650662124156952
+0.20052000880241394,0.0012624982045963407,0.20052000880241394,7949.0,66,2025-10-27 19:41:31.821385,,,,,,,,,
+0.2426585555076599,0.0021317587234079838,0.2426585555076599,7999.0,66,2025-10-27 19:46:01.668633,,,,,,,,,
+,,,,66,2025-10-27 19:50:54.775021,0.143999382853508,0.0008101967396214604,0.143999382853508,0.1495984047651291,0.0013092788867652416,0.1495984047651291,,,
+,,,,66,2025-10-27 19:51:09.099272,,,,,,,0.17436598241329193,0.004348889458924532,0.17436598241329193
+0.14247828722000122,0.0007849022513255477,0.14247828722000122,8049.0,67,2025-10-27 19:52:36.617948,,,,,,,,,
+0.17706933617591858,0.0058964393101632595,0.17706933617591858,8099.0,67,2025-10-27 19:57:06.839557,,,,,,,,,
+0.11754477769136429,0.0006507882499136031,0.11754477769136429,8149.0,67,2025-10-27 20:01:37.312886,,,,,,,,,
+,,,,67,2025-10-27 20:03:41.085432,0.13726037740707397,0.0006183352088555694,0.13726037740707397,0.1770162433385849,0.004801295697689056,0.1770162433385849,,,
+,,,,67,2025-10-27 20:03:55.088331,,,,,,,0.1592518389225006,0.0019866637885570526,0.1592518389225006
+0.28204548358917236,0.0012488518841564655,0.28204548358917236,8199.0,68,2025-10-27 20:08:05.734623,,,,,,,,,
+0.173738494515419,0.0007667627069167793,0.173738494515419,8249.0,68,2025-10-27 20:12:36.025590,,,,,,,,,
+,,,,68,2025-10-27 20:16:33.021577,0.1701529324054718,0.001099179033190012,0.1701529324054718,0.14239220321178436,0.0014458264922723174,0.14239220321178436,,,
+,,,,68,2025-10-27 20:16:47.129131,,,,,,,0.1790778487920761,0.004358279053121805,0.1790778487920761
+0.2770531475543976,0.0014386695111170411,0.2770531475543976,8299.0,69,2025-10-27 20:19:06.036744,,,,,,,,,
+0.08525293320417404,0.0002863374538719654,0.08525293320417404,8349.0,69,2025-10-27 20:23:36.634361,,,,,,,,,
+0.2533504068851471,0.0020828263368457556,0.2533504068851471,8399.0,69,2025-10-27 20:28:06.139547,,,,,,,,,
+,,,,69,2025-10-27 20:29:18.031089,0.13297617435455322,0.0005895820795558393,0.13297617435455322,0.1624409705400467,0.001694922219030559,0.1624409705400467,,,
+,,,,69,2025-10-27 20:29:32.633195,,,,,,,0.16290982067584991,0.0031699305400252342,0.16290982067584991
+0.26798057556152344,0.004574443679302931,0.26798057556152344,8449.0,70,2025-10-27 20:34:32.176121,,,,,,,,,
+0.20979145169258118,0.001097162370570004,0.20979145169258118,8499.0,70,2025-10-27 20:39:03.440036,,,,,,,,,
+,,,,70,2025-10-27 20:42:05.093987,0.1580786406993866,0.0029527340084314346,0.1580786406993866,0.12800981104373932,0.0009439534042030573,0.12800981104373932,,,
+,,,,70,2025-10-27 20:42:30.433742,,,,,,,0.1618497371673584,0.0017867687856778502,0.1618497371673584
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1761542695.node-0.1923.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1761542695.node-0.1923.0
new file mode 100644
index 0000000000000000000000000000000000000000..80cf01b9fc2176d7d642978d9c1eedd2ccff5454
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask/testtube/version_0/tf/events.out.tfevents.1761542695.node-0.1923.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a3e6ccbf55ad7cb57009de4de091f28cad27063cac10be33c3cb48ffde563c8
+size 86637
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/3d_results_step20_train_latest/train_13082_a_1_fused.nii.gz b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/3d_results_step20_train_latest/train_13082_a_1_fused.nii.gz
new file mode 100644
index 0000000000000000000000000000000000000000..b6e674259ef09b5ceea1850184ed58ab1c1c426a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/3d_results_step20_train_latest/train_13082_a_1_fused.nii.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83f067ae31ed50afd9a87c3c1ff7a9918b2792e4f06ab9acc35ba405c38837cb
+size 69422987
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000056.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000056.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..48716c3b9f7f7e393d8b15a4ee4d48bd467d695a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000056.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3ff10e4ffee33a000282e6d0b62bc611e6d7b3e1050789ee5e09d1a8022e0af2
+size 3016768189
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000063.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000063.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..8e9342799bb2bac2a95875197e38088aa63f7769
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000063.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e57dc069f6a74f09eed7c839d5b0aa6ebd2da79309622d5b9af6af81f3cf35b8
+size 3016768444
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000078.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000078.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..bb40a176d6e0ffaee728f32379dbf69bb8e8a7fe
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/epoch=000078.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37de355da931cd6f8a36437a6629cf1b2f9fdff014076869cb87efbfcd2d8d84
+size 3016768444
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt
new file mode 100644
index 0000000000000000000000000000000000000000..bb40a176d6e0ffaee728f32379dbf69bb8e8a7fe
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37de355da931cd6f8a36437a6629cf1b2f9fdff014076869cb87efbfcd2d8d84
+size 3016768444
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..af576c4f4222ea130206951d1e6274cd32183a05
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-lightning.yaml
@@ -0,0 +1,12 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-29T14-12-09-project.yaml
@@ -0,0 +1,61 @@
+model:
+ base_learning_rate: 5.0e-06
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: false
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
+ load_only_unet: true
+ fix_t: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..230511a02424ed10f059b373a04513b0024480d8
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-30T17-42-15-project.yaml
@@ -0,0 +1,61 @@
+model:
+ base_learning_rate: 5.0e-06
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: false
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
+ load_only_unet: true
+ fix_t: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..230511a02424ed10f059b373a04513b0024480d8
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-03-07-project.yaml
@@ -0,0 +1,61 @@
+model:
+ base_learning_rate: 5.0e-06
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: false
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
+ load_only_unet: true
+ fix_t: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-lightning.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-lightning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..230511a02424ed10f059b373a04513b0024480d8
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-lightning.yaml
@@ -0,0 +1,13 @@
+lightning:
+ callbacks:
+ image_logger:
+ target: main.ImageLogger
+ params:
+ batch_frequency: 100000000
+ max_images: 16
+ increase_log_steps: false
+ trainer:
+ benchmark: true
+ accelerator: ddp
+ gpus: 0,1,2,3,
+ resume_from_checkpoint: ./logs/full_ct_3d_with_body_mask2/checkpoints/last.ckpt
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-project.yaml b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-project.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c40b7c4cc710a034b88c8dbafbbcc2248bb880ee
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/configs/2025-10-31T06-18-06-project.yaml
@@ -0,0 +1,61 @@
+model:
+ base_learning_rate: 5.0e-06
+ target: ldm.models.diffusion.ddpm_pseudo3D.LatentDiffusion
+ params:
+ linear_start: 0.00085
+ linear_end: 0.012
+ num_timesteps_cond: 1
+ log_every_t: 200
+ timesteps: 1000
+ first_stage_key: volume_data
+ cond_stage_key: volume_seg_and_text
+ conditioning_key: crossattn
+ text_enc: custom
+ image_size: 64
+ channels: 16
+ monitor: val/loss_simple_ema
+ scale_factor: 1.52
+ use_ema: false
+ ckpt_path: /sd/qichen/full_ct_gen/GEM-3D-ct-text4-newdata-newvae-retrain/logs/full_ct_2d_with_body_mask/checkpoints/epoch=000999.ckpt
+ load_only_unet: true
+ fix_t: true
+ unet_config:
+ target: ldm.modules.diffusionmodules.openaimodel_pseudo3D.UNetModel
+ params:
+ image_size: 64
+ in_channels: 32
+ out_channels: 16
+ model_channels: 224
+ attention_resolutions:
+ - 8
+ - 4
+ - 2
+ num_res_blocks: 2
+ channel_mult:
+ - 1
+ - 2
+ - 3
+ - 4
+ num_head_channels: 32
+ use_spatial_transformer: true
+ context_dim: 768
+ transformer_depth: 1
+ use_checkpoint: true
+ legacy: false
+data:
+ target: main.DataModuleFromConfig
+ params:
+ batch_size: 4
+ num_workers: 16
+ wrap: false
+ train:
+ target: ldm.data.ct_clip_data_train.CTReportDataset
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/train_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/train_reports.csv
+ validation:
+ target: ldm.data.ct_clip_data_inference.CTReportDatasetinfer
+ params:
+ data_folder: /sd/shuhan/CT-RATE/dataset/valid_fixed
+ csv_file: /sd/shuhan/CT-RATE/radiology_text_reports/valid_reports.csv
+ labels: /sd/shuhan/CT-RATE/multi_abnormality_labels/valid_predicted_labels.csv
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..97981c85b19356b7b98588f6cdd047bd3b902ea0
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 0, "tags_path": "logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv", "metrics_path": "logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-29 14:13:17.969983", "exp_hash": "testtube_v0"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e330c7ab3b8304529c64f11158abe27fc124cbad
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/metrics.csv
@@ -0,0 +1,444 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.23908032476902008,0.0011343687074258924,0.23908032476902008,49.0,0,2025-10-29 14:20:21.911425,,,,,,,,,
+0.30251675844192505,0.002104790648445487,0.30251675844192505,99.0,0,2025-10-29 14:24:35.160852,,,,,,,,,
+0.35154110193252563,0.001948594581335783,0.35154110193252563,149.0,0,2025-10-29 14:28:49.632750,,,,,,,,,
+0.15310753881931305,0.0005334988818503916,0.15310753881931305,199.0,0,2025-10-29 14:33:02.088980,,,,,,,,,
+0.32497289776802063,0.0016616820357739925,0.32497289776802063,249.0,0,2025-10-29 14:37:16.200807,,,,,,,,,
+0.38051292300224304,0.0017145754536613822,0.38051292300224304,299.0,0,2025-10-29 14:41:28.584657,,,,,,,,,
+,,,,0,2025-10-29 14:45:34.840615,0.3087482154369354,0.003038213588297367,0.3087482154369354,0.2975386381149292,0.0053969016298651695,0.2975386381149292,,,
+,,,,0,2025-10-29 14:46:17.433329,,,,,,,0.3152048885822296,0.004895733203738928,0.3152048885822296
+0.19669345021247864,0.0006730232271365821,0.19669345021247864,349.0,1,2025-10-29 14:49:40.189741,,,,,,,,,
+0.11191047728061676,0.00039595545968040824,0.11191047728061676,399.0,1,2025-10-29 14:53:53.039486,,,,,,,,,
+0.3523745834827423,0.0029680172447115183,0.3523745834827423,449.0,1,2025-10-29 14:58:07.596508,,,,,,,,,
+0.17951560020446777,0.0006164076621644199,0.17951560020446777,499.0,1,2025-10-29 15:02:20.361401,,,,,,,,,
+0.399543434381485,0.002303391695022583,0.399543434381485,549.0,1,2025-10-29 15:06:35.113002,,,,,,,,,
+0.11659114807844162,0.00039954521344043314,0.11659114807844162,599.0,1,2025-10-29 15:10:48.161057,,,,,,,,,
+,,,,1,2025-10-29 15:16:06.212567,0.33782750368118286,0.0042132167145609856,0.33782750368118286,0.3167296051979065,0.0031394646503031254,0.3167296051979065,,,
+,,,,1,2025-10-29 15:16:52.269576,,,,,,,0.30598723888397217,0.003654726315289736,0.30598723888397217
+0.5553275942802429,0.046405546367168427,0.5553275942802429,649.0,2,2025-10-29 15:18:46.422272,,,,,,,,,
+0.35899263620376587,0.0016843070043250918,0.35899263620376587,699.0,2,2025-10-29 15:22:59.709975,,,,,,,,,
+0.42693978548049927,0.0046363393776118755,0.42693978548049927,749.0,2,2025-10-29 15:27:14.803748,,,,,,,,,
+0.5343826413154602,0.0031069060787558556,0.5343826413154602,799.0,2,2025-10-29 15:31:28.497592,,,,,,,,,
+0.19179260730743408,0.0011462504044175148,0.19179260730743408,849.0,2,2025-10-29 15:35:44.461528,,,,,,,,,
+0.4685225784778595,0.005754082463681698,0.4685225784778595,899.0,2,2025-10-29 15:39:58.458888,,,,,,,,,
+0.05294087901711464,0.00020188180496916175,0.05294087901711464,949.0,2,2025-10-29 15:44:13.807823,,,,,,,,,
+,,,,2,2025-10-29 15:46:48.430734,0.2542015314102173,0.0017268877709284425,0.2542015314102173,0.3296174705028534,0.0061865877360105515,0.3296174705028534,,,
+,,,,2,2025-10-29 15:47:31.905512,,,,,,,0.29082003235816956,0.006203934084624052,0.29082003235816956
+0.35446977615356445,0.002602964174002409,0.35446977615356445,999.0,3,2025-10-29 15:52:14.826606,,,,,,,,,
+0.2732226550579071,0.0016087318072095513,0.2732226550579071,1049.0,3,2025-10-29 15:56:30.531924,,,,,,,,,
+0.15200234949588776,0.0005852255853824317,0.15200234949588776,1099.0,3,2025-10-29 16:00:44.289340,,,,,,,,,
+0.18980398774147034,0.0006420011050067842,0.18980398774147034,1149.0,3,2025-10-29 16:04:59.922288,,,,,,,,,
+0.16636742651462555,0.0005592307425104082,0.16636742651462555,1199.0,3,2025-10-29 16:09:14.132949,,,,,,,,,
+0.15863154828548431,0.0006177073810249567,0.15863154828548431,1249.0,3,2025-10-29 16:13:29.687977,,,,,,,,,
+,,,,3,2025-10-29 16:17:33.475772,0.2833861708641052,0.005222904961556196,0.2833861708641052,0.2626101076602936,0.0034472059924155474,0.2626101076602936,,,
+,,,,3,2025-10-29 16:18:18.130951,,,,,,,0.30323734879493713,0.005902774631977081,0.30323734879493713
+0.20627662539482117,0.000768955098465085,0.20627662539482117,1299.0,4,2025-10-29 16:21:21.069481,,,,,,,,,
+0.33012765645980835,0.009327958337962627,0.33012765645980835,1349.0,4,2025-10-29 16:25:36.755603,,,,,,,,,
+0.30601876974105835,0.04063171520829201,0.30601876974105835,1399.0,4,2025-10-29 16:29:50.616972,,,,,,,,,
+0.36119428277015686,0.007217325735837221,0.36119428277015686,1449.0,4,2025-10-29 16:34:06.226460,,,,,,,,,
+0.3552730679512024,0.0015500012086704373,0.3552730679512024,1499.0,4,2025-10-29 16:38:20.428779,,,,,,,,,
+0.6961968541145325,0.006548278033733368,0.6961968541145325,1549.0,4,2025-10-29 16:42:36.543000,,,,,,,,,
+,,,,4,2025-10-29 16:48:12.330141,0.39142531156539917,0.005813002586364746,0.39142531156539917,0.2987259328365326,0.003481501480564475,0.2987259328365326,,,
+,,,,4,2025-10-29 16:48:55.482655,,,,,,,0.2981264591217041,0.0043659214861691,0.2981264591217041
+0.2536710500717163,0.0029625999741256237,0.2536710500717163,1599.0,5,2025-10-29 16:50:32.539156,,,,,,,,,
+0.5945897698402405,0.00790607649832964,0.5945897698402405,1649.0,5,2025-10-29 16:54:48.200182,,,,,,,,,
+0.47038859128952026,0.0027692713774740696,0.47038859128952026,1699.0,5,2025-10-29 16:59:02.316873,,,,,,,,,
+0.18040227890014648,0.0006857349071651697,0.18040227890014648,1749.0,5,2025-10-29 17:03:18.247760,,,,,,,,,
+0.43785324692726135,0.005962334107607603,0.43785324692726135,1799.0,5,2025-10-29 17:07:32.662275,,,,,,,,,
+0.6013099551200867,0.01814509555697441,0.6013099551200867,1849.0,5,2025-10-29 17:11:48.921558,,,,,,,,,
+0.2369524985551834,0.004086245317012072,0.2369524985551834,1899.0,5,2025-10-29 17:16:03.182028,,,,,,,,,
+,,,,5,2025-10-29 17:18:59.860780,0.2867490351200104,0.002114885253831744,0.2867490351200104,0.300796777009964,0.002119652461260557,0.300796777009964,,,
+,,,,5,2025-10-29 17:19:23.808254,,,,,,,0.3203050494194031,0.005419914610683918,0.3203050494194031
+0.44585904479026794,0.1289890855550766,0.44585904479026794,1949.0,6,2025-10-29 17:24:06.402273,,,,,,,,,
+0.29628267884254456,0.0012116719735786319,0.29628267884254456,1999.0,6,2025-10-29 17:28:20.598398,,,,,,,,,
+0.26807722449302673,0.0010985847329720855,0.26807722449302673,2049.0,6,2025-10-29 17:32:36.884155,,,,,,,,,
+0.2691807448863983,0.007393568754196167,0.2691807448863983,2099.0,6,2025-10-29 17:36:51.324779,,,,,,,,,
+0.16139642894268036,0.0006282184622250497,0.16139642894268036,2149.0,6,2025-10-29 17:41:07.660840,,,,,,,,,
+0.18395453691482544,0.000815959763713181,0.18395453691482544,2199.0,6,2025-10-29 17:45:22.359093,,,,,,,,,
+,,,,6,2025-10-29 17:49:46.836086,0.2588304579257965,0.0031222437974065542,0.2588304579257965,0.2873288691043854,0.003463541157543659,0.2873288691043854,,,
+,,,,6,2025-10-29 17:50:30.752849,,,,,,,0.294228732585907,0.005789300426840782,0.294228732585907
+0.3701322078704834,0.0014451886527240276,0.3701322078704834,2249.0,7,2025-10-29 17:53:17.466569,,,,,,,,,
+0.2957797050476074,0.0011649474035948515,0.2957797050476074,2299.0,7,2025-10-29 17:57:31.775046,,,,,,,,,
+0.3366512358188629,0.0013882165076211095,0.3366512358188629,2349.0,7,2025-10-29 18:01:47.786173,,,,,,,,,
+0.3265620768070221,0.0022930356208235025,0.3265620768070221,2399.0,7,2025-10-29 18:06:02.505432,,,,,,,,,
+0.12117893248796463,0.00041585727012716234,0.12117893248796463,2449.0,7,2025-10-29 18:10:18.835232,,,,,,,,,
+0.16617342829704285,0.000591142219491303,0.16617342829704285,2499.0,7,2025-10-29 18:14:33.730207,,,,,,,,,
+,,,,7,2025-10-29 18:20:33.117540,0.3469368517398834,0.002777489135041833,0.3469368517398834,0.31635427474975586,0.0024765271227806807,0.31635427474975586,,,
+,,,,7,2025-10-29 18:20:54.154785,,,,,,,0.28586575388908386,0.003923572134226561,0.28586575388908386
+0.20669816434383392,0.0006971092661842704,0.20669816434383392,2549.0,8,2025-10-29 18:22:13.499846,,,,,,,,,
+0.3896293044090271,0.0026990813203155994,0.3896293044090271,2599.0,8,2025-10-29 18:26:28.340616,,,,,,,,,
+0.37768790125846863,0.013755994848906994,0.37768790125846863,2649.0,8,2025-10-29 18:30:45.146314,,,,,,,,,
+0.2957230806350708,0.001236134790815413,0.2957230806350708,2699.0,8,2025-10-29 18:35:00.194835,,,,,,,,,
+0.4221704304218292,0.0022278116084635258,0.4221704304218292,2749.0,8,2025-10-29 18:39:17.304197,,,,,,,,,
+0.2938273847103119,0.0028684185817837715,0.2938273847103119,2799.0,8,2025-10-29 18:43:32.418921,,,,,,,,,
+0.16528426110744476,0.000611891970038414,0.16528426110744476,2849.0,8,2025-10-29 18:47:48.769000,,,,,,,,,
+,,,,8,2025-10-29 18:51:01.089488,0.3076690137386322,0.004200373310595751,0.3076690137386322,0.2640102803707123,0.002116052433848381,0.2640102803707123,,,
+,,,,8,2025-10-29 18:51:47.002341,,,,,,,0.2955467104911804,0.004480264149606228,0.2955467104911804
+0.25988778471946716,0.0009303645347245038,0.25988778471946716,2899.0,9,2025-10-29 18:55:49.466592,,,,,,,,,
+0.12805095314979553,0.0004418003954924643,0.12805095314979553,2949.0,9,2025-10-29 19:00:06.230860,,,,,,,,,
+0.22989481687545776,0.0008421807433478534,0.22989481687545776,2999.0,9,2025-10-29 19:04:21.426320,,,,,,,,,
+0.3598778545856476,0.0049188872799277306,0.3598778545856476,3049.0,9,2025-10-29 19:08:38.216014,,,,,,,,,
+0.25674858689308167,0.0009910238441079855,0.25674858689308167,3099.0,9,2025-10-29 19:12:53.360334,,,,,,,,,
+0.26137423515319824,0.0010072096483781934,0.26137423515319824,3149.0,9,2025-10-29 19:17:10.347806,,,,,,,,,
+,,,,9,2025-10-29 19:21:53.539371,0.28881487250328064,0.0055525475181639194,0.28881487250328064,0.29950574040412903,0.006536771543323994,0.29950574040412903,,,
+,,,,9,2025-10-29 19:22:16.161985,,,,,,,0.28228050470352173,0.003854431677609682,0.28228050470352173
+0.058755528181791306,0.00023000678629614413,0.058755528181791306,3199.0,10,2025-10-29 19:24:44.583959,,,,,,,,,
+0.4030425250530243,0.003599276067689061,0.4030425250530243,3249.0,10,2025-10-29 19:29:00.432326,,,,,,,,,
+0.18233664333820343,0.0006565888761542737,0.18233664333820343,3299.0,10,2025-10-29 19:33:15.113670,,,,,,,,,
+0.2977958023548126,0.0013435787986963987,0.2977958023548126,3349.0,10,2025-10-29 19:37:31.493271,,,,,,,,,
+0.22787025570869446,0.0009271143353544176,0.22787025570869446,3399.0,10,2025-10-29 19:41:46.279972,,,,,,,,,
+0.26149415969848633,0.001024951576255262,0.26149415969848633,3449.0,10,2025-10-29 19:46:02.851454,,,,,,,,,
+,,,,10,2025-10-29 19:52:15.352156,0.25641798973083496,0.0017995418747887015,0.25641798973083496,0.2672744393348694,0.004761606454849243,0.2672744393348694,,,
+,,,,10,2025-10-29 19:52:56.922059,,,,,,,0.2889505624771118,0.003584904596209526,0.2889505624771118
+0.32904037833213806,0.0013656936353072524,0.32904037833213806,3499.0,11,2025-10-29 19:54:02.490052,,,,,,,,,
+0.41990071535110474,0.006398315541446209,0.41990071535110474,3549.0,11,2025-10-29 19:58:19.164900,,,,,,,,,
+0.5369344353675842,0.005614943336695433,0.5369344353675842,3599.0,11,2025-10-29 20:02:34.100258,,,,,,,,,
+0.20289723575115204,0.0008842325187288225,0.20289723575115204,3649.0,11,2025-10-29 20:06:50.835719,,,,,,,,,
+0.09660141915082932,0.00034390934160910547,0.09660141915082932,3699.0,11,2025-10-29 20:11:05.881758,,,,,,,,,
+0.17780974507331848,0.0006014474201947451,0.17780974507331848,3749.0,11,2025-10-29 20:15:23.119253,,,,,,,,,
+0.3768346905708313,0.002366062253713608,0.3768346905708313,3799.0,11,2025-10-29 20:19:38.125199,,,,,,,,,
+,,,,11,2025-10-29 20:23:13.175652,0.31738319993019104,0.0026417311746627092,0.31738319993019104,0.30670517683029175,0.008628605864942074,0.30670517683029175,,,
+,,,,11,2025-10-29 20:23:35.448089,,,,,,,0.3013068437576294,0.004326937720179558,0.3013068437576294
+0.3649531900882721,0.00457545043900609,0.3649531900882721,3849.0,12,2025-10-29 20:27:09.519321,,,,,,,,,
+0.6168498992919922,0.004650406073778868,0.6168498992919922,3899.0,12,2025-10-29 20:31:23.875147,,,,,,,,,
+0.16271907091140747,0.000570900272578001,0.16271907091140747,3949.0,12,2025-10-29 20:35:40.184001,,,,,,,,,
+0.3736174702644348,0.006089617498219013,0.3736174702644348,3999.0,12,2025-10-29 20:39:54.781094,,,,,,,,,
+0.31644406914711,0.0026186092291027308,0.31644406914711,4049.0,12,2025-10-29 20:44:10.915775,,,,,,,,,
+0.4868186414241791,0.002435473958030343,0.4868186414241791,4099.0,12,2025-10-29 20:48:25.428957,,,,,,,,,
+,,,,12,2025-10-29 20:53:33.269638,0.3274848461151123,0.010460731573402882,0.3274848461151123,0.2818436026573181,0.004787106532603502,0.2818436026573181,,,
+,,,,12,2025-10-29 20:53:56.050871,,,,,,,0.3032332956790924,0.004012937191873789,0.3032332956790924
+0.46721750497817993,0.0038812626153230667,0.46721750497817993,4149.0,13,2025-10-29 20:56:06.914834,,,,,,,,,
+0.2574557960033417,0.0011555439559742808,0.2574557960033417,4199.0,13,2025-10-29 21:00:22.156169,,,,,,,,,
+0.5270809531211853,0.12994655966758728,0.5270809531211853,4249.0,13,2025-10-29 21:04:38.515410,,,,,,,,,
+0.46558013558387756,0.0034257094375789165,0.46558013558387756,4299.0,13,2025-10-29 21:08:53.143775,,,,,,,,,
+0.4181281626224518,0.008208311162889004,0.4181281626224518,4349.0,13,2025-10-29 21:13:09.640278,,,,,,,,,
+0.10323469340801239,0.0003559025062713772,0.10323469340801239,4399.0,13,2025-10-29 21:17:24.496505,,,,,,,,,
+0.2582753002643585,0.00108713295776397,0.2582753002643585,4449.0,13,2025-10-29 21:21:41.076199,,,,,,,,,
+,,,,13,2025-10-29 21:24:07.409991,0.2762134075164795,0.0015854613156989217,0.2762134075164795,0.3195546269416809,0.0021276683546602726,0.3195546269416809,,,
+,,,,13,2025-10-29 21:24:30.787674,,,,,,,0.29791566729545593,0.003995195031166077,0.29791566729545593
+0.24854815006256104,0.0010034370934590697,0.24854815006256104,4499.0,14,2025-10-29 21:29:16.988551,,,,,,,,,
+0.24162444472312927,0.0008333681616932154,0.24162444472312927,4549.0,14,2025-10-29 21:33:33.882121,,,,,,,,,
+0.25108715891838074,0.0008703142520971596,0.25108715891838074,4599.0,14,2025-10-29 21:37:49.352197,,,,,,,,,
+0.19934417307376862,0.0011348300613462925,0.19934417307376862,4649.0,14,2025-10-29 21:42:06.341619,,,,,,,,,
+0.3453989326953888,0.003260394325479865,0.3453989326953888,4699.0,14,2025-10-29 21:46:21.604882,,,,,,,,,
+0.2962069511413574,0.0016868726816028357,0.2962069511413574,4749.0,14,2025-10-29 21:50:38.650398,,,,,,,,,
+,,,,14,2025-10-29 21:54:35.919429,0.35571378469467163,0.004675368778407574,0.35571378469467163,0.2749635577201843,0.002560048596933484,0.2749635577201843,,,
+,,,,14,2025-10-29 21:54:59.899537,,,,,,,0.2885216474533081,0.004023636691272259,0.2885216474533081
+0.21757672727108002,0.0007945331162773073,0.21757672727108002,4799.0,15,2025-10-29 21:58:16.581957,,,,,,,,,
+0.1768243908882141,0.0007810973911546171,0.1768243908882141,4849.0,15,2025-10-29 22:02:32.953609,,,,,,,,,
+0.23817910254001617,0.0008477979572489858,0.23817910254001617,4899.0,15,2025-10-29 22:06:47.738946,,,,,,,,,
+0.20312687754631042,0.0007677834946662188,0.20312687754631042,4949.0,15,2025-10-29 22:11:03.898677,,,,,,,,,
+0.0716928169131279,0.0002622066531330347,0.0716928169131279,4999.0,15,2025-10-29 22:15:18.659198,,,,,,,,,
+0.2998744249343872,0.0016512672882527113,0.2998744249343872,5049.0,15,2025-10-29 22:19:34.991302,,,,,,,,,
+,,,,15,2025-10-29 22:25:02.452339,0.2921454906463623,0.005413286853581667,0.2921454906463623,0.31411612033843994,0.005804493557661772,0.31411612033843994,,,
+,,,,15,2025-10-29 22:25:24.569908,,,,,,,0.2922162413597107,0.004339145962148905,0.2922162413597107
+0.22835403680801392,0.0007976272027008235,0.22835403680801392,5099.0,16,2025-10-29 22:27:17.962399,,,,,,,,,
+0.20761585235595703,0.0007047537947073579,0.20761585235595703,5149.0,16,2025-10-29 22:31:34.307597,,,,,,,,,
+0.3785971403121948,0.001499716192483902,0.3785971403121948,5199.0,16,2025-10-29 22:35:49.451341,,,,,,,,,
+0.2895170748233795,0.0012935514096170664,0.2895170748233795,5249.0,16,2025-10-29 22:40:05.950322,,,,,,,,,
+0.2880163788795471,0.001471292576752603,0.2880163788795471,5299.0,16,2025-10-29 22:44:20.950758,,,,,,,,,
+0.5521544218063354,0.042403124272823334,0.5521544218063354,5349.0,16,2025-10-29 22:48:37.813462,,,,,,,,,
+0.3307924270629883,0.005263160448521376,0.3307924270629883,5399.0,16,2025-10-29 22:52:52.946232,,,,,,,,,
+,,,,16,2025-10-29 22:55:37.143184,0.29342490434646606,0.0029779935721307993,0.29342490434646606,0.3171903192996979,0.002767461584880948,0.3171903192996979,,,
+,,,,16,2025-10-29 22:56:02.187800,,,,,,,0.286733478307724,0.00416194275021553,0.286733478307724
+0.16122159361839294,0.0005633566761389375,0.16122159361839294,5449.0,17,2025-10-29 23:00:33.976050,,,,,,,,,
+0.07416174560785294,0.00026965569122694433,0.07416174560785294,5499.0,17,2025-10-29 23:04:49.755002,,,,,,,,,
+0.1058124527335167,0.00037149470881558955,0.1058124527335167,5549.0,17,2025-10-29 23:09:06.100603,,,,,,,,,
+0.2340269535779953,0.0009858367266133428,0.2340269535779953,5599.0,17,2025-10-29 23:13:20.785175,,,,,,,,,
+0.24774792790412903,0.000991667271591723,0.24774792790412903,5649.0,17,2025-10-29 23:17:37.346268,,,,,,,,,
+0.31507426500320435,0.001468466012738645,0.31507426500320435,5699.0,17,2025-10-29 23:21:52.295176,,,,,,,,,
+,,,,17,2025-10-29 23:26:08.666921,0.3396616280078888,0.004507793113589287,0.3396616280078888,0.3129202723503113,0.0030057665426284075,0.3129202723503113,,,
+,,,,17,2025-10-29 23:26:29.639353,,,,,,,0.2799444794654846,0.004336171317845583,0.2799444794654846
+0.2779267728328705,0.003055351786315441,0.2779267728328705,5749.0,18,2025-10-29 23:29:30.645672,,,,,,,,,
+0.3259534239768982,0.0012066791532561183,0.3259534239768982,5799.0,18,2025-10-29 23:33:45.869312,,,,,,,,,
+0.26659664511680603,0.0010486829560250044,0.26659664511680603,5849.0,18,2025-10-29 23:38:02.795090,,,,,,,,,
+0.24334722757339478,0.0009089027880690992,0.24334722757339478,5899.0,18,2025-10-29 23:42:18.129731,,,,,,,,,
+0.1591944694519043,0.0005510518094524741,0.1591944694519043,5949.0,18,2025-10-29 23:46:35.247481,,,,,,,,,
+0.5015321969985962,0.0038959665689617395,0.5015321969985962,5999.0,18,2025-10-29 23:50:50.564224,,,,,,,,,
+,,,,18,2025-10-29 23:56:39.353029,0.28558459877967834,0.0028743084985762835,0.28558459877967834,0.27103811502456665,0.0019692794885486364,0.27103811502456665,,,
+,,,,18,2025-10-29 23:57:00.072859,,,,,,,0.2978723347187042,0.004476546309888363,0.2978723347187042
+0.2768291234970093,0.0011063956189900637,0.2768291234970093,6049.0,19,2025-10-29 23:58:19.163883,,,,,,,,,
+0.1521957665681839,0.0005162688321433961,0.1521957665681839,6099.0,19,2025-10-30 00:02:33.687922,,,,,,,,,
+0.2179100662469864,0.0009199402993544936,0.2179100662469864,6149.0,19,2025-10-30 00:06:50.271707,,,,,,,,,
+0.18621601164340973,0.0006440104334615171,0.18621601164340973,6199.0,19,2025-10-30 00:11:05.271925,,,,,,,,,
+0.27869558334350586,0.00114060181658715,0.27869558334350586,6249.0,19,2025-10-30 00:15:22.208428,,,,,,,,,
+0.30042603611946106,0.004672468174248934,0.30042603611946106,6299.0,19,2025-10-30 00:19:37.410059,,,,,,,,,
+0.13567687571048737,0.00046529906103387475,0.13567687571048737,6349.0,19,2025-10-30 00:23:53.984037,,,,,,,,,
+,,,,19,2025-10-30 00:26:55.978121,0.2680910527706146,0.0028161867521703243,0.2680910527706146,0.3115180730819702,0.004423291422426701,0.3115180730819702,,,
+,,,,19,2025-10-30 00:27:17.776767,,,,,,,0.29711952805519104,0.006253817584365606,0.29711952805519104
+0.08206604421138763,0.0002899030514527112,0.08206604421138763,6399.0,20,2025-10-30 00:31:31.440880,,,,,,,,,
+0.1410166621208191,0.0004904220695607364,0.1410166621208191,6449.0,20,2025-10-30 00:35:48.307020,,,,,,,,,
+0.36372116208076477,0.005780098028481007,0.36372116208076477,6499.0,20,2025-10-30 00:40:03.566616,,,,,,,,,
+0.041469756513834,0.00016830461390782148,0.041469756513834,6549.0,20,2025-10-30 00:44:20.064926,,,,,,,,,
+0.333352655172348,0.002195443259552121,0.333352655172348,6599.0,20,2025-10-30 00:48:34.634935,,,,,,,,,
+0.11755424737930298,0.00044962094398215413,0.11755424737930298,6649.0,20,2025-10-30 00:52:51.026206,,,,,,,,,
+,,,,20,2025-10-30 00:57:25.953976,0.32358604669570923,0.0022557415068149567,0.32358604669570923,0.30950358510017395,0.0036284541711211205,0.30950358510017395,,,
+,,,,20,2025-10-30 00:57:49.085931,,,,,,,0.28399115800857544,0.0034157780464738607,0.28399115800857544
+0.339813768863678,0.0019359400030225515,0.339813768863678,6699.0,21,2025-10-30 01:00:26.051657,,,,,,,,,
+0.3985264301300049,0.0025944982189685106,0.3985264301300049,6749.0,21,2025-10-30 01:04:42.308309,,,,,,,,,
+0.21325701475143433,0.0009544118074700236,0.21325701475143433,6799.0,21,2025-10-30 01:08:56.386397,,,,,,,,,
+0.22746406495571136,0.0008633260149508715,0.22746406495571136,6849.0,21,2025-10-30 01:13:12.764166,,,,,,,,,
+0.4769253432750702,0.022238967940211296,0.4769253432750702,6899.0,21,2025-10-30 01:17:27.382195,,,,,,,,,
+0.18236446380615234,0.0006172828143462539,0.18236446380615234,6949.0,21,2025-10-30 01:21:43.878016,,,,,,,,,
+,,,,21,2025-10-30 01:27:47.549629,0.3165885806083679,0.003783063031733036,0.3165885806083679,0.3013854920864105,0.004883608780801296,0.3013854920864105,,,
+,,,,21,2025-10-30 01:28:09.846091,,,,,,,0.28164348006248474,0.004529633559286594,0.28164348006248474
+0.5389054417610168,0.005310563370585442,0.5389054417610168,6999.0,22,2025-10-30 01:29:09.846772,,,,,,,,,
+0.1119823083281517,0.00038220800342969596,0.1119823083281517,7049.0,22,2025-10-30 01:33:26.814652,,,,,,,,,
+0.32137876749038696,0.0017616460099816322,0.32137876749038696,7099.0,22,2025-10-30 01:37:41.806603,,,,,,,,,
+0.06081698089838028,0.00022157584317028522,0.06081698089838028,7149.0,22,2025-10-30 01:41:58.477232,,,,,,,,,
+0.31852272152900696,0.001418408122844994,0.31852272152900696,7199.0,22,2025-10-30 01:46:13.558341,,,,,,,,,
+0.2679924964904785,0.000982447643764317,0.2679924964904785,7249.0,22,2025-10-30 01:50:30.345762,,,,,,,,,
+0.32944297790527344,0.0036667732056230307,0.32944297790527344,7299.0,22,2025-10-30 01:54:44.893562,,,,,,,,,
+,,,,22,2025-10-30 01:58:15.719813,0.3248562812805176,0.002325542038306594,0.3248562812805176,0.28342995047569275,0.010237275622785091,0.28342995047569275,,,
+,,,,22,2025-10-30 01:58:37.018112,,,,,,,0.2921651303768158,0.005806222092360258,0.2921651303768158
+0.1528352051973343,0.0005288815009407699,0.1528352051973343,7349.0,23,2025-10-30 02:02:23.637203,,,,,,,,,
+0.28769010305404663,0.0010874244617298245,0.28769010305404663,7399.0,23,2025-10-30 02:06:38.646355,,,,,,,,,
+0.09771580994129181,0.0003473516262602061,0.09771580994129181,7449.0,23,2025-10-30 02:10:55.376987,,,,,,,,,
+0.3950721323490143,0.0017771971179172397,0.3950721323490143,7499.0,23,2025-10-30 02:15:10.524409,,,,,,,,,
+0.08358774334192276,0.00030172266997396946,0.08358774334192276,7549.0,23,2025-10-30 02:19:27.257478,,,,,,,,,
+0.3660825192928314,0.003734664060175419,0.3660825192928314,7599.0,23,2025-10-30 02:23:42.724354,,,,,,,,,
+,,,,23,2025-10-30 02:28:38.028517,0.28217217326164246,0.0073500438593328,0.28217217326164246,0.2825459837913513,0.0017233813414350152,0.2825459837913513,,,
+,,,,23,2025-10-30 02:29:04.078948,,,,,,,0.29169636964797974,0.004196641501039267,0.29169636964797974
+0.16770140826702118,0.0006813137442804873,0.16770140826702118,7649.0,24,2025-10-30 02:31:13.619163,,,,,,,,,
+0.06883910298347473,0.00025173250469379127,0.06883910298347473,7699.0,24,2025-10-30 02:35:28.290544,,,,,,,,,
+0.32396796345710754,0.019826794043183327,0.32396796345710754,7749.0,24,2025-10-30 02:39:44.361649,,,,,,,,,
+0.331307977437973,0.0016301594441756606,0.331307977437973,7799.0,24,2025-10-30 02:43:59.379888,,,,,,,,,
+0.44257301092147827,0.010922032408416271,0.44257301092147827,7849.0,24,2025-10-30 02:48:15.961679,,,,,,,,,
+0.30672338604927063,0.001132725621573627,0.30672338604927063,7899.0,24,2025-10-30 02:52:30.672265,,,,,,,,,
+0.5011573433876038,0.0022920125629752874,0.5011573433876038,7949.0,24,2025-10-30 02:56:44.402104,,,,,,,,,
+,,,,24,2025-10-30 02:59:02.333153,0.3107577860355377,0.007751108147203922,0.3107577860355377,0.28748953342437744,0.002658963669091463,0.28748953342437744,,,
+,,,,24,2025-10-30 02:59:24.166724,,,,,,,0.28150755167007446,0.00516370078548789,0.28150755167007446
+0.3829401731491089,0.0019786872435361147,0.3829401731491089,7999.0,25,2025-10-30 03:04:23.514849,,,,,,,,,
+0.3627878427505493,0.008258693851530552,0.3627878427505493,8049.0,25,2025-10-30 03:08:39.457195,,,,,,,,,
+0.1190975159406662,0.0004297931445762515,0.1190975159406662,8099.0,25,2025-10-30 03:12:54.009279,,,,,,,,,
+0.38661864399909973,0.0030025753658264875,0.38661864399909973,8149.0,25,2025-10-30 03:17:10.393731,,,,,,,,,
+0.4453372359275818,0.012607538141310215,0.4453372359275818,8199.0,25,2025-10-30 03:21:25.365879,,,,,,,,,
+0.1155056431889534,0.0004025315574835986,0.1155056431889534,8249.0,25,2025-10-30 03:25:41.528070,,,,,,,,,
+,,,,25,2025-10-30 03:29:27.173300,0.2579275667667389,0.004039929714053869,0.2579275667667389,0.3136349022388458,0.00452826265245676,0.3136349022388458,,,
+,,,,25,2025-10-30 03:30:32.813512,,,,,,,0.29395806789398193,0.004408984445035458,0.29395806789398193
+0.10960201919078827,0.00038947947905398905,0.10960201919078827,8299.0,26,2025-10-30 03:34:03.794311,,,,,,,,,
+0.481776624917984,0.002200528746470809,0.481776624917984,8349.0,26,2025-10-30 03:38:20.864897,,,,,,,,,
+0.23331159353256226,0.0009687889250926673,0.23331159353256226,8399.0,26,2025-10-30 03:42:35.967307,,,,,,,,,
+0.2284531146287918,0.0008166179177351296,0.2284531146287918,8449.0,26,2025-10-30 03:46:52.902004,,,,,,,,,
+0.3400467336177826,0.0033736673649400473,0.3400467336177826,8499.0,26,2025-10-30 03:51:07.954119,,,,,,,,,
+0.18687957525253296,0.0007005348452366889,0.18687957525253296,8549.0,26,2025-10-30 03:55:24.609594,,,,,,,,,
+,,,,26,2025-10-30 04:00:39.097605,0.2319113165140152,0.001248640357516706,0.2319113165140152,0.2908177971839905,0.0027100546285510063,0.2908177971839905,,,
+,,,,26,2025-10-30 04:01:01.154440,,,,,,,0.2910361588001251,0.005252906586974859,0.2910361588001251
+0.4021162688732147,0.0036716132890433073,0.4021162688732147,8599.0,27,2025-10-30 04:03:04.769912,,,,,,,,,
+0.434103399515152,0.001786754815839231,0.434103399515152,8649.0,27,2025-10-30 04:07:20.639754,,,,,,,,,
+0.2895534038543701,0.0010822616750374436,0.2895534038543701,8699.0,27,2025-10-30 04:11:34.885294,,,,,,,,,
+0.34653186798095703,0.0017052500043064356,0.34653186798095703,8749.0,27,2025-10-30 04:15:50.563842,,,,,,,,,
+0.20069381594657898,0.0010733777889981866,0.20069381594657898,8799.0,27,2025-10-30 04:20:04.877507,,,,,,,,,
+0.16296616196632385,0.0005789623828604817,0.16296616196632385,8849.0,27,2025-10-30 04:24:20.590650,,,,,,,,,
+0.22077961266040802,0.0007999671506695449,0.22077961266040802,8899.0,27,2025-10-30 04:28:34.626176,,,,,,,,,
+,,,,27,2025-10-30 04:31:07.845712,0.2641375660896301,0.0028313647489994764,0.2641375660896301,0.272603839635849,0.002083365572616458,0.272603839635849,,,
+,,,,27,2025-10-30 04:31:31.079462,,,,,,,0.2906489372253418,0.005178537219762802,0.2906489372253418
+0.3955362141132355,0.0025808641221374273,0.3955362141132355,8949.0,28,2025-10-30 04:36:16.609645,,,,,,,,,
+0.4424906075000763,0.0029091371688991785,0.4424906075000763,8999.0,28,2025-10-30 04:40:30.271443,,,,,,,,,
+0.40124887228012085,0.005771825555711985,0.40124887228012085,9049.0,28,2025-10-30 04:44:46.207924,,,,,,,,,
+0.2169305682182312,0.001137056271545589,0.2169305682182312,9099.0,28,2025-10-30 04:49:00.179250,,,,,,,,,
+0.18157805502414703,0.0006358170649036765,0.18157805502414703,9149.0,28,2025-10-30 04:53:16.139453,,,,,,,,,
+0.3408219516277313,0.0014497111551463604,0.3408219516277313,9199.0,28,2025-10-30 04:57:30.369587,,,,,,,,,
+,,,,28,2025-10-30 05:01:34.872384,0.27892234921455383,0.004057521000504494,0.27892234921455383,0.2727968990802765,0.0018802867271006107,0.2727968990802765,,,
+,,,,28,2025-10-30 05:01:56.581474,,,,,,,0.3055512607097626,0.005215855780988932,0.3055512607097626
+0.15559197962284088,0.0007621913100592792,0.15559197962284088,9249.0,29,2025-10-30 05:05:02.489443,,,,,,,,,
+0.2869635224342346,0.0012159990146756172,0.2869635224342346,9299.0,29,2025-10-30 05:09:16.595581,,,,,,,,,
+0.1939922720193863,0.0006810458726249635,0.1939922720193863,9349.0,29,2025-10-30 05:13:32.252094,,,,,,,,,
+0.037859078496694565,0.00015671466826461256,0.037859078496694565,9399.0,29,2025-10-30 05:17:46.589805,,,,,,,,,
+0.33364734053611755,0.0017064179992303252,0.33364734053611755,9449.0,29,2025-10-30 05:22:02.510141,,,,,,,,,
+0.3811497986316681,0.001933678169734776,0.3811497986316681,9499.0,29,2025-10-30 05:26:17.132243,,,,,,,,,
+,,,,29,2025-10-30 05:31:56.635017,0.2838393449783325,0.0025333045050501823,0.2838393449783325,0.30080413818359375,0.0024397987872362137,0.30080413818359375,,,
+,,,,29,2025-10-30 05:32:18.369619,,,,,,,0.2795110046863556,0.003956452943384647,0.2795110046863556
+0.3552066683769226,0.005744567606598139,0.3552066683769226,9549.0,30,2025-10-30 05:33:51.434418,,,,,,,,,
+0.218814417719841,0.0008745263912715018,0.218814417719841,9599.0,30,2025-10-30 05:38:05.924805,,,,,,,,,
+0.42079803347587585,0.0021291060838848352,0.42079803347587585,9649.0,30,2025-10-30 05:42:21.888368,,,,,,,,,
+0.14751401543617249,0.0005357158370316029,0.14751401543617249,9699.0,30,2025-10-30 05:46:36.560632,,,,,,,,,
+0.24462498724460602,0.0013417836744338274,0.24462498724460602,9749.0,30,2025-10-30 05:50:52.564931,,,,,,,,,
+0.41684162616729736,0.003841788973659277,0.41684162616729736,9799.0,30,2025-10-30 05:55:07.205691,,,,,,,,,
+0.19335494935512543,0.0006876527331769466,0.19335494935512543,9849.0,30,2025-10-30 05:59:23.446963,,,,,,,,,
+,,,,30,2025-10-30 06:02:15.861629,0.3206191062927246,0.003442150540649891,0.3206191062927246,0.31940916180610657,0.006209783721715212,0.31940916180610657,,,
+,,,,30,2025-10-30 06:02:39.884541,,,,,,,0.2990376949310303,0.004395711235702038,0.2990376949310303
+0.2835102677345276,0.0025852269027382135,0.2835102677345276,9899.0,31,2025-10-30 06:07:07.444569,,,,,,,,,
+0.09148751944303513,0.00032595545053482056,0.09148751944303513,9949.0,31,2025-10-30 06:11:23.355269,,,,,,,,,
+0.2262074500322342,0.0009281912352889776,0.2262074500322342,9999.0,31,2025-10-30 06:15:37.411588,,,,,,,,,
+0.6044716238975525,0.004506497178226709,0.6044716238975525,10049.0,31,2025-10-30 06:19:53.145690,,,,,,,,,
+0.29582616686820984,0.0019727915059775114,0.29582616686820984,10099.0,31,2025-10-30 06:24:07.102047,,,,,,,,,
+0.2130632996559143,0.0007081449148245156,0.2130632996559143,10149.0,31,2025-10-30 06:28:22.869532,,,,,,,,,
+,,,,31,2025-10-30 06:32:45.484380,0.31062552332878113,0.003688403870910406,0.31062552332878113,0.29371678829193115,0.003840908408164978,0.29371678829193115,,,
+,,,,31,2025-10-30 06:33:07.516721,,,,,,,0.2985556423664093,0.005542816128581762,0.2985556423664093
+0.47125428915023804,0.006666187662631273,0.47125428915023804,10199.0,32,2025-10-30 06:36:01.486841,,,,,,,,,
+0.23611968755722046,0.0010775235714390874,0.23611968755722046,10249.0,32,2025-10-30 06:40:17.886183,,,,,,,,,
+0.13993215560913086,0.00047896659816615283,0.13993215560913086,10299.0,32,2025-10-30 06:44:33.001133,,,,,,,,,
+0.2585639953613281,0.001005556550808251,0.2585639953613281,10349.0,32,2025-10-30 06:48:49.216146,,,,,,,,,
+0.44208860397338867,0.010079520754516125,0.44208860397338867,10399.0,32,2025-10-30 06:53:03.526311,,,,,,,,,
+0.11962604522705078,0.000410095090046525,0.11962604522705078,10449.0,32,2025-10-30 06:57:19.712212,,,,,,,,,
+,,,,32,2025-10-30 07:03:20.960512,0.27205196022987366,0.0035903158131986856,0.27205196022987366,0.30085209012031555,0.0071843997575342655,0.30085209012031555,,,
+,,,,32,2025-10-30 07:03:43.345106,,,,,,,0.28716591000556946,0.004437125287950039,0.28716591000556946
+0.2673521637916565,0.0012100008316338062,0.2673521637916565,10499.0,33,2025-10-30 07:04:56.191417,,,,,,,,,
+0.12239713221788406,0.0004241403366904706,0.12239713221788406,10549.0,33,2025-10-30 07:09:12.167357,,,,,,,,,
+0.533919632434845,0.014497952535748482,0.533919632434845,10599.0,33,2025-10-30 07:13:26.433806,,,,,,,,,
+0.3085501492023468,0.001970544457435608,0.3085501492023468,10649.0,33,2025-10-30 07:17:42.248365,,,,,,,,,
+0.3111933171749115,0.003638282883912325,0.3111933171749115,10699.0,33,2025-10-30 07:21:56.274545,,,,,,,,,
+0.34486299753189087,0.0021412023343145847,0.34486299753189087,10749.0,33,2025-10-30 07:26:11.829140,,,,,,,,,
+0.5640574097633362,0.0036976372357457876,0.5640574097633362,10799.0,33,2025-10-30 07:30:25.590452,,,,,,,,,
+,,,,33,2025-10-30 07:33:46.263358,0.2797681391239166,0.0069467611610889435,0.2797681391239166,0.26124709844589233,0.0033449390903115273,0.26124709844589233,,,
+,,,,33,2025-10-30 07:34:24.365754,,,,,,,0.3001389801502228,0.006086844485253096,0.3001389801502228
+0.22806137800216675,0.0009466434712521732,0.22806137800216675,10849.0,34,2025-10-30 07:38:20.196570,,,,,,,,,
+0.2675575315952301,0.0009234301978722215,0.2675575315952301,10899.0,34,2025-10-30 07:42:34.509336,,,,,,,,,
+0.4159413278102875,0.006840047892183065,0.4159413278102875,10949.0,34,2025-10-30 07:46:50.263537,,,,,,,,,
+0.3017396032810211,0.0021872087381780148,0.3017396032810211,10999.0,34,2025-10-30 07:51:04.578703,,,,,,,,,
+0.23020201921463013,0.0010992917232215405,0.23020201921463013,11049.0,34,2025-10-30 07:55:20.562978,,,,,,,,,
+0.07913966476917267,0.0002901074767578393,0.07913966476917267,11099.0,34,2025-10-30 07:59:34.782079,,,,,,,,,
+,,,,34,2025-10-30 08:04:23.758483,0.2905294895172119,0.005447696894407272,0.2905294895172119,0.34677571058273315,0.0053291623480618,0.34677571058273315,,,
+,,,,34,2025-10-30 08:04:46.306044,,,,,,,0.29785412549972534,0.0041497377678751945,0.29785412549972534
+0.15532410144805908,0.0005338153569027781,0.15532410144805908,11149.0,35,2025-10-30 08:07:04.216412,,,,,,,,,
+0.10686435550451279,0.00036872000782750547,0.10686435550451279,11199.0,35,2025-10-30 08:11:18.028830,,,,,,,,,
+0.226584330201149,0.0008117846446111798,0.226584330201149,11249.0,35,2025-10-30 08:15:34.625705,,,,,,,,,
+0.5396043062210083,0.006326004397124052,0.5396043062210083,11299.0,35,2025-10-30 08:19:48.695236,,,,,,,,,
+0.41465073823928833,0.06058657914400101,0.41465073823928833,11349.0,35,2025-10-30 08:24:04.684971,,,,,,,,,
+0.27072611451148987,0.0011809458956122398,0.27072611451148987,11399.0,35,2025-10-30 08:28:19.074225,,,,,,,,,
+,,,,35,2025-10-30 08:34:54.258027,0.3132733404636383,0.009831455536186695,0.3132733404636383,0.27838751673698425,0.002011288655921817,0.27838751673698425,,,
+,,,,35,2025-10-30 08:35:16.983713,,,,,,,0.2970474362373352,0.0051296669989824295,0.2970474362373352
+0.20326033234596252,0.0011724266223609447,0.20326033234596252,11449.0,36,2025-10-30 08:36:31.427465,,,,,,,,,
+0.29881903529167175,0.0013044066727161407,0.29881903529167175,11499.0,36,2025-10-30 08:40:46.238994,,,,,,,,,
+0.1821470707654953,0.0006238612695597112,0.1821470707654953,11549.0,36,2025-10-30 08:45:02.177309,,,,,,,,,
+0.29282093048095703,0.001511811395175755,0.29282093048095703,11599.0,36,2025-10-30 08:49:17.316606,,,,,,,,,
+0.42703041434288025,0.0020410194993019104,0.42703041434288025,11649.0,36,2025-10-30 08:53:33.121126,,,,,,,,,
+0.19431699812412262,0.0007279818528331816,0.19431699812412262,11699.0,36,2025-10-30 08:57:47.028324,,,,,,,,,
+0.06479198485612869,0.00023955271171871573,0.06479198485612869,11749.0,36,2025-10-30 09:02:03.088397,,,,,,,,,
+,,,,36,2025-10-30 09:06:20.528052,0.27585241198539734,0.007326968479901552,0.27585241198539734,0.34273606538772583,0.0073861535638570786,0.34273606538772583,,,
+,,,,36,2025-10-30 09:06:41.454037,,,,,,,0.2948736846446991,0.003802361898124218,0.2948736846446991
+0.13883766531944275,0.00047411967534571886,0.13883766531944275,11799.0,37,2025-10-30 09:11:48.406280,,,,,,,,,
+0.5530754327774048,0.006816794630140066,0.5530754327774048,11849.0,37,2025-10-30 09:16:04.122319,,,,,,,,,
+0.3646296560764313,0.001689202501438558,0.3646296560764313,11899.0,37,2025-10-30 09:20:19.521231,,,,,,,,,
+0.4888438582420349,0.0022212802432477474,0.4888438582420349,11949.0,37,2025-10-30 09:24:35.478948,,,,,,,,,
+0.2933620512485504,0.002153988229110837,0.2933620512485504,11999.0,37,2025-10-30 09:28:49.978631,,,,,,,,,
+0.3467772603034973,0.0044134221971035,0.3467772603034973,12049.0,37,2025-10-30 09:33:06.207619,,,,,,,,,
+,,,,37,2025-10-30 09:38:32.420370,0.27963772416114807,0.005305735860019922,0.27963772416114807,0.2813526391983032,0.0018407885218039155,0.2813526391983032,,,
+,,,,37,2025-10-30 09:38:56.722568,,,,,,,0.284730464220047,0.0043952809646725655,0.284730464220047
+0.34670180082321167,0.008875751867890358,0.34670180082321167,12099.0,38,2025-10-30 09:41:07.939307,,,,,,,,,
+0.17076914012432098,0.0007836946751922369,0.17076914012432098,12149.0,38,2025-10-30 09:45:23.624510,,,,,,,,,
+0.1826806664466858,0.0006190766580402851,0.1826806664466858,12199.0,38,2025-10-30 09:49:38.105870,,,,,,,,,
+0.32417163252830505,0.0020045156124979258,0.32417163252830505,12249.0,38,2025-10-30 09:53:54.457376,,,,,,,,,
+0.24663782119750977,0.0011878452496603131,0.24663782119750977,12299.0,38,2025-10-30 09:58:08.764498,,,,,,,,,
+0.4087176024913788,0.0016145005356520414,0.4087176024913788,12349.0,38,2025-10-30 10:02:25.093139,,,,,,,,,
+0.6235059499740601,0.012723331339657307,0.6235059499740601,12399.0,38,2025-10-30 10:06:39.540607,,,,,,,,,
+,,,,38,2025-10-30 10:09:51.321299,0.3064601421356201,0.008192882873117924,0.3064601421356201,0.29138049483299255,0.008715538308024406,0.29138049483299255,,,
+,,,,38,2025-10-30 10:10:18.392340,,,,,,,0.28712719678878784,0.004032351542264223,0.28712719678878784
+0.09042484313249588,0.0003205490065738559,0.09042484313249588,12449.0,39,2025-10-30 10:15:52.992533,,,,,,,,,
+0.15917794406414032,0.0007170665776357055,0.15917794406414032,12499.0,39,2025-10-30 10:20:07.689178,,,,,,,,,
+0.3489307463169098,0.0015130620449781418,0.3489307463169098,12549.0,39,2025-10-30 10:24:24.441631,,,,,,,,,
+0.37536492943763733,0.0018997797742486,0.37536492943763733,12599.0,39,2025-10-30 10:28:39.150170,,,,,,,,,
+0.09404409676790237,0.00033891244675032794,0.09404409676790237,12649.0,39,2025-10-30 10:32:55.437806,,,,,,,,,
+0.217308908700943,0.0007629588362760842,0.217308908700943,12699.0,39,2025-10-30 10:37:09.698971,,,,,,,,,
+,,,,39,2025-10-30 10:41:12.862847,0.32060736417770386,0.0026109644677489996,0.32060736417770386,0.3372825086116791,0.003888174891471863,0.3372825086116791,,,
+,,,,39,2025-10-30 10:41:34.084029,,,,,,,0.2766526937484741,0.004732623230665922,0.2766526937484741
+0.21790607273578644,0.0009324386483058333,0.21790607273578644,12749.0,40,2025-10-30 10:45:11.044628,,,,,,,,,
+0.40073394775390625,0.004016284365206957,0.40073394775390625,12799.0,40,2025-10-30 10:49:25.053219,,,,,,,,,
+0.363106906414032,0.0017456355271860957,0.363106906414032,12849.0,40,2025-10-30 10:53:41.175852,,,,,,,,,
+0.19161033630371094,0.0006389057380147278,0.19161033630371094,12899.0,40,2025-10-30 10:57:55.558290,,,,,,,,,
+0.14191646873950958,0.0004991719615645707,0.14191646873950958,12949.0,40,2025-10-30 11:02:11.755468,,,,,,,,,
+0.32612189650535583,0.003948661964386702,0.32612189650535583,12999.0,40,2025-10-30 11:06:25.957205,,,,,,,,,
+,,,,40,2025-10-30 11:12:03.046412,0.3036341667175293,0.0026792497374117374,0.3036341667175293,0.3065663278102875,0.007401706650853157,0.3065663278102875,,,
+,,,,40,2025-10-30 11:12:25.801596,,,,,,,0.2813563644886017,0.0031941207125782967,0.2813563644886017
+0.33792856335639954,0.00252280430868268,0.33792856335639954,13049.0,41,2025-10-30 11:14:38.120000,,,,,,,,,
+0.22751665115356445,0.0008018523803912103,0.22751665115356445,13099.0,41,2025-10-30 11:18:52.031728,,,,,,,,,
+0.16744035482406616,0.0007323589525185525,0.16744035482406616,13149.0,41,2025-10-30 11:23:08.280077,,,,,,,,,
+0.4180070757865906,0.0022762988228350878,0.4180070757865906,13199.0,41,2025-10-30 11:27:23.817417,,,,,,,,,
+0.3874112069606781,0.008106929250061512,0.3874112069606781,13249.0,41,2025-10-30 11:31:40.099314,,,,,,,,,
+0.2686566710472107,0.0011900071986019611,0.2686566710472107,13299.0,41,2025-10-30 11:35:54.661700,,,,,,,,,
+0.10128004103899002,0.000359135476173833,0.10128004103899002,13349.0,41,2025-10-30 11:40:10.474331,,,,,,,,,
+,,,,41,2025-10-30 11:43:09.980587,0.294272243976593,0.0026660796720534563,0.294272243976593,0.24940818548202515,0.0030927620828151703,0.24940818548202515,,,
+,,,,41,2025-10-30 11:44:00.406719,,,,,,,0.2741971015930176,0.004068201407790184,0.2741971015930176
+0.40992000699043274,0.0030938670970499516,0.40992000699043274,13399.0,42,2025-10-30 11:48:33.118144,,,,,,,,,
+0.20794697105884552,0.0008242036565206945,0.20794697105884552,13449.0,42,2025-10-30 11:52:48.846273,,,,,,,,,
+0.29490238428115845,0.03981553018093109,0.29490238428115845,13499.0,42,2025-10-30 11:57:08.120313,,,,,,,,,
+0.35654282569885254,0.041011545807123184,0.35654282569885254,13549.0,42,2025-10-30 12:01:24.233754,,,,,,,,,
+0.276669979095459,0.12332651019096375,0.276669979095459,13599.0,42,2025-10-30 12:05:38.676056,,,,,,,,,
+0.1976337432861328,0.000707112078089267,0.1976337432861328,13649.0,42,2025-10-30 12:09:55.326421,,,,,,,,,
+,,,,42,2025-10-30 12:14:26.408429,0.29758206009864807,0.007304852362722158,0.29758206009864807,0.23173494637012482,0.0010959489736706018,0.23173494637012482,,,
+,,,,42,2025-10-30 12:15:09.355043,,,,,,,0.28614598512649536,0.004658416844904423,0.28614598512649536
+0.29189783334732056,0.0012084856862202287,0.29189783334732056,13699.0,43,2025-10-30 12:18:40.463517,,,,,,,,,
+0.10832778364419937,0.00037520358455367386,0.10832778364419937,13749.0,43,2025-10-30 12:22:56.703600,,,,,,,,,
+0.16176000237464905,0.000544267357327044,0.16176000237464905,13799.0,43,2025-10-30 12:27:10.630082,,,,,,,,,
+0.4165797233581543,0.0034014475531876087,0.4165797233581543,13849.0,43,2025-10-30 12:31:26.816075,,,,,,,,,
+0.29339390993118286,0.0064946915954351425,0.29339390993118286,13899.0,43,2025-10-30 12:35:40.988701,,,,,,,,,
+0.5899966955184937,0.004667297936975956,0.5899966955184937,13949.0,43,2025-10-30 12:39:57.503440,,,,,,,,,
+,,,,43,2025-10-30 12:46:31.689578,0.3033325672149658,0.0022577650379389524,0.3033325672149658,0.2951819598674774,0.0025244373828172684,0.2951819598674774,,,
+,,,,43,2025-10-30 12:46:54.573626,,,,,,,0.2816826105117798,0.0051361555233597755,0.2816826105117798
+0.3609868884086609,0.0024542915634810925,0.3609868884086609,13999.0,44,2025-10-30 12:48:22.545011,,,,,,,,,
+0.2390943467617035,0.001385729294270277,0.2390943467617035,14049.0,44,2025-10-30 12:52:37.683434,,,,,,,,,
+0.38417065143585205,0.0018036516848951578,0.38417065143585205,14099.0,44,2025-10-30 12:56:52.322506,,,,,,,,,
+0.22732459008693695,0.000803291448391974,0.22732459008693695,14149.0,44,2025-10-30 13:01:09.519257,,,,,,,,,
+0.4544858932495117,0.0026897189673036337,0.4544858932495117,14199.0,44,2025-10-30 13:05:23.935412,,,,,,,,,
+0.18534545600414276,0.0008233219850808382,0.18534545600414276,14249.0,44,2025-10-30 13:09:39.806196,,,,,,,,,
+0.15155595541000366,0.0005677940207533538,0.15155595541000366,14299.0,44,2025-10-30 13:13:54.078995,,,,,,,,,
+,,,,44,2025-10-30 13:17:06.265066,0.27492406964302063,0.009889733977615833,0.27492406964302063,0.333534300327301,0.008530158549547195,0.333534300327301,,,
+,,,,44,2025-10-30 13:17:32.354684,,,,,,,0.2866224944591522,0.004040933679789305,0.2866224944591522
+0.17003287374973297,0.000866132730152458,0.17003287374973297,14349.0,45,2025-10-30 13:21:55.772172,,,,,,,,,
+0.3518979847431183,0.002610620344057679,0.3518979847431183,14399.0,45,2025-10-30 13:26:10.180393,,,,,,,,,
+0.03203636035323143,0.0001327615900663659,0.03203636035323143,14449.0,45,2025-10-30 13:30:26.479727,,,,,,,,,
+0.22857990860939026,0.001068420009687543,0.22857990860939026,14499.0,45,2025-10-30 13:34:40.932703,,,,,,,,,
+0.217445969581604,0.0007979902438819408,0.217445969581604,14549.0,45,2025-10-30 13:38:57.208235,,,,,,,,,
+0.14918585121631622,0.0005702365306206048,0.14918585121631622,14599.0,45,2025-10-30 13:43:28.290861,,,,,,,,,
+,,,,45,2025-10-30 13:48:20.092013,0.2533278167247772,0.002102695405483246,0.2533278167247772,0.30370765924453735,0.0021306900307536125,0.30370765924453735,,,
+,,,,45,2025-10-30 13:48:41.136377,,,,,,,0.2781066596508026,0.004579897969961166,0.2781066596508026
+0.3734358549118042,0.0036158114671707153,0.3734358549118042,14649.0,46,2025-10-30 13:51:13.506332,,,,,,,,,
+0.2667524814605713,0.0012406319146975875,0.2667524814605713,14699.0,46,2025-10-30 13:55:27.827513,,,,,,,,,
+0.20776665210723877,0.0007379681919701397,0.20776665210723877,14749.0,46,2025-10-30 13:59:44.718231,,,,,,,,,
+0.31771400570869446,0.0026290782261639833,0.31771400570869446,14799.0,46,2025-10-30 14:03:59.731555,,,,,,,,,
+0.13937900960445404,0.0004942168015986681,0.13937900960445404,14849.0,46,2025-10-30 14:08:16.328458,,,,,,,,,
+0.4102691411972046,0.002390107372775674,0.4102691411972046,14899.0,46,2025-10-30 14:12:31.455985,,,,,,,,,
+,,,,46,2025-10-30 14:18:42.642682,0.2771187126636505,0.008145826868712902,0.2771187126636505,0.289711594581604,0.0021821584086865187,0.289711594581604,,,
+,,,,46,2025-10-30 14:19:04.055235,,,,,,,0.27723947167396545,0.004293929319828749,0.27723947167396545
+0.32585251331329346,0.0034461901523172855,0.32585251331329346,14949.0,47,2025-10-30 14:21:08.079164,,,,,,,,,
+0.3814477026462555,0.0015289458679035306,0.3814477026462555,14999.0,47,2025-10-30 14:25:22.210175,,,,,,,,,
+0.1206660121679306,0.0004145222483202815,0.1206660121679306,15049.0,47,2025-10-30 14:29:38.157488,,,,,,,,,
+0.3238666355609894,0.0012581708142533898,0.3238666355609894,15099.0,47,2025-10-30 14:33:52.842773,,,,,,,,,
+0.21414630115032196,0.000924732128623873,0.21414630115032196,15149.0,47,2025-10-30 14:38:08.275129,,,,,,,,,
+0.08141335844993591,0.0002941057027783245,0.08141335844993591,15199.0,47,2025-10-30 14:42:22.864348,,,,,,,,,
+0.4078981876373291,0.0018507925560697913,0.4078981876373291,15249.0,47,2025-10-30 14:46:43.525003,,,,,,,,,
+,,,,47,2025-10-30 14:50:19.111673,0.2906115651130676,0.005327929276973009,0.2906115651130676,0.29147204756736755,0.0026149109471589327,0.29147204756736755,,,
+,,,,47,2025-10-30 14:50:43.142525,,,,,,,0.28112155199050903,0.0049289227463305,0.28112155199050903
+0.41249269247055054,0.0027916347607970238,0.41249269247055054,15299.0,48,2025-10-30 14:54:35.974620,,,,,,,,,
+0.19627998769283295,0.0007007608655840158,0.19627998769283295,15349.0,48,2025-10-30 14:58:51.633294,,,,,,,,,
+0.34229692816734314,0.0014219838194549084,0.34229692816734314,15399.0,48,2025-10-30 15:03:06.328033,,,,,,,,,
+0.04748174920678139,0.00018700740474741906,0.04748174920678139,15449.0,48,2025-10-30 15:07:22.561296,,,,,,,,,
+0.24818064272403717,0.0008619721047580242,0.24818064272403717,15499.0,48,2025-10-30 15:11:37.458148,,,,,,,,,
+0.27886030077934265,0.030491909012198448,0.27886030077934265,15549.0,48,2025-10-30 15:15:53.999377,,,,,,,,,
+,,,,48,2025-10-30 15:20:53.650662,0.30651918053627014,0.0056987847201526165,0.30651918053627014,0.3627791106700897,0.0100241145119071,0.3627791106700897,,,
+,,,,48,2025-10-30 15:21:18.403661,,,,,,,0.28289541602134705,0.00494904350489378,0.28289541602134705
+0.10591381043195724,0.00040945198270492256,0.10591381043195724,15599.0,49,2025-10-30 15:23:58.047951,,,,,,,,,
+0.35326167941093445,0.0020789431873708963,0.35326167941093445,15649.0,49,2025-10-30 15:28:14.217758,,,,,,,,,
+0.18939290940761566,0.0006611724384129047,0.18939290940761566,15699.0,49,2025-10-30 15:32:29.123237,,,,,,,,,
+0.37757161259651184,0.008772729896008968,0.37757161259651184,15749.0,49,2025-10-30 15:36:46.131498,,,,,,,,,
+0.3354547321796417,0.0014390801079571247,0.3354547321796417,15799.0,49,2025-10-30 15:41:01.033361,,,,,,,,,
+0.21892957389354706,0.0009758748346939683,0.21892957389354706,15849.0,49,2025-10-30 15:45:17.909962,,,,,,,,,
+0.3198564350605011,0.0010880624176934361,0.3198564350605011,15899.0,49,2025-10-30 15:49:30.235909,,,,,,,,,
+,,,,49,2025-10-30 15:52:26.235866,0.27708032727241516,0.0023534062784165144,0.27708032727241516,0.292570561170578,0.003506820648908615,0.292570561170578,,,
+,,,,49,2025-10-30 15:52:49.140355,,,,,,,0.2796321213245392,0.004157422110438347,0.2796321213245392
+0.1175348088145256,0.0004226098535582423,0.1175348088145256,15949.0,50,2025-10-30 15:58:00.931552,,,,,,,,,
+0.21013453602790833,0.0007093430613167584,0.21013453602790833,15999.0,50,2025-10-30 16:02:15.485410,,,,,,,,,
+0.24314504861831665,0.001065672840923071,0.24314504861831665,16049.0,50,2025-10-30 16:06:31.550921,,,,,,,,,
+0.4421885907649994,0.008369010873138905,0.4421885907649994,16099.0,50,2025-10-30 16:10:46.121642,,,,,,,,,
+0.33820411562919617,0.12583330273628235,0.33820411562919617,16149.0,50,2025-10-30 16:15:02.171441,,,,,,,,,
+0.3740650713443756,0.0017831566510722041,0.3740650713443756,16199.0,50,2025-10-30 16:19:17.194729,,,,,,,,,
+,,,,50,2025-10-30 16:23:10.039155,0.34932318329811096,0.004454923328012228,0.34932318329811096,0.2985277771949768,0.0023228854406625032,0.2985277771949768,,,
+,,,,50,2025-10-30 16:23:35.701751,,,,,,,0.2936883270740509,0.0041837189346551895,0.2936883270740509
+0.042278338223695755,0.00016744730237405747,0.042278338223695755,16249.0,51,2025-10-30 16:27:03.815268,,,,,,,,,
+0.2404123991727829,0.0008095355005934834,0.2404123991727829,16299.0,51,2025-10-30 16:31:18.838032,,,,,,,,,
+0.2050895243883133,0.0009728366858325899,0.2050895243883133,16349.0,51,2025-10-30 16:35:34.606716,,,,,,,,,
+0.46374937891960144,0.0025118968915194273,0.46374937891960144,16399.0,51,2025-10-30 16:39:49.996212,,,,,,,,,
+0.258929580450058,0.0019012567354366183,0.258929580450058,16449.0,51,2025-10-30 16:44:06.771507,,,,,,,,,
+0.21743576228618622,0.0012688380666077137,0.21743576228618622,16499.0,51,2025-10-30 16:48:22.241219,,,,,,,,,
+,,,,51,2025-10-30 16:53:44.015655,0.30258360505104065,0.002684579696506262,0.30258360505104065,0.3195871114730835,0.0034660971723496914,0.3195871114730835,,,
+,,,,51,2025-10-30 16:54:07.993511,,,,,,,0.28398165106773376,0.005521737039089203,0.28398165106773376
+0.40083274245262146,0.0020886699203401804,0.40083274245262146,16549.0,52,2025-10-30 16:56:07.037193,,,,,,,,,
+0.5514025688171387,0.009710065089166164,0.5514025688171387,16599.0,52,2025-10-30 17:00:21.611631,,,,,,,,,
+0.28902313113212585,0.0013250790070742369,0.28902313113212585,16649.0,52,2025-10-30 17:04:38.645531,,,,,,,,,
+0.24879083037376404,0.001089019700884819,0.24879083037376404,16699.0,52,2025-10-30 17:08:53.757019,,,,,,,,,
+0.27996131777763367,0.0011163892922922969,0.27996131777763367,16749.0,52,2025-10-30 17:13:10.362378,,,,,,,,,
+0.424310564994812,0.0028617887292057276,0.424310564994812,16799.0,52,2025-10-30 17:17:25.287072,,,,,,,,,
+0.4897773861885071,0.003998169209808111,0.4897773861885071,16849.0,52,2025-10-30 17:21:41.961444,,,,,,,,,
+,,,,52,2025-10-30 17:24:32.809404,0.2784580886363983,0.003662784118205309,0.2784580886363983,0.28254234790802,0.0031234126072376966,0.28254234790802,,,
+,,,,52,2025-10-30 17:24:58.116216,,,,,,,0.29126736521720886,0.0031195245683193207,0.29126736521720886
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761747200.node-0.1948.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761747200.node-0.1948.0
new file mode 100644
index 0000000000000000000000000000000000000000..0067c929d25c9c991e46db02fb2e63783c9a5942
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_0/tf/events.out.tfevents.1761747200.node-0.1948.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65aad61bf8cf2554d9f6fe31e238e49bfa79e571e581e21dbfd4a4cedb480c71
+size 120869
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..65411b829cb27a1fb66e4ec6f92040a8ba2c4068
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 1, "tags_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv", "metrics_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-30 17:43:45.979460", "exp_hash": "testtube_v1"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ae67bab9f9dde4baf3a542c54dee7f17aa8a17b2
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/metrics.csv
@@ -0,0 +1,202 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.11212219297885895,0.0003960200119763613,0.11212219297885895,16899.0,53,2025-10-30 17:49:42.708947,,,,,,,,,
+0.09797403216362,0.000347994442563504,0.09797403216362,16949.0,53,2025-10-30 17:53:55.652821,,,,,,,,,
+0.12681113183498383,0.0005246975342743099,0.12681113183498383,16999.0,53,2025-10-30 17:58:07.423540,,,,,,,,,
+0.30255594849586487,0.002192130545154214,0.30255594849586487,17049.0,53,2025-10-30 18:02:20.051440,,,,,,,,,
+0.10943446308374405,0.0003911755920853466,0.10943446308374405,17099.0,53,2025-10-30 18:06:31.706266,,,,,,,,,
+0.32569727301597595,0.00169422198086977,0.32569727301597595,17149.0,53,2025-10-30 18:10:45.160091,,,,,,,,,
+,,,,53,2025-10-30 18:14:54.745409,0.290383905172348,0.002903107088059187,0.290383905172348,0.28003472089767456,0.005173171404749155,0.28003472089767456,,,
+,,,,53,2025-10-30 18:15:25.324546,,,,,,,0.2862495481967926,0.004567870404571295,0.2862495481967926
+0.43677282333374023,0.008148068562150002,0.43677282333374023,17199.0,54,2025-10-30 18:18:16.567450,,,,,,,,,
+0.17210814356803894,0.000977946212515235,0.17210814356803894,17249.0,54,2025-10-30 18:22:30.227592,,,,,,,,,
+0.24216032028198242,0.0013860143953934312,0.24216032028198242,17299.0,54,2025-10-30 18:26:42.619548,,,,,,,,,
+0.19998003542423248,0.0009403559961356223,0.19998003542423248,17349.0,54,2025-10-30 18:30:56.279999,,,,,,,,,
+0.09673044085502625,0.0003436384431552142,0.09673044085502625,17399.0,54,2025-10-30 18:35:09.085715,,,,,,,,,
+0.565712571144104,0.018044665455818176,0.565712571144104,17449.0,54,2025-10-30 18:39:22.739588,,,,,,,,,
+,,,,54,2025-10-30 18:44:39.944298,0.3219923973083496,0.004068424925208092,0.3219923973083496,0.30204299092292786,0.003023289144039154,0.30204299092292786,,,
+,,,,54,2025-10-30 18:45:10.268104,,,,,,,0.28762710094451904,0.003484525019302964,0.28762710094451904
+0.2183709442615509,0.000836774124763906,0.2183709442615509,17499.0,55,2025-10-30 18:46:31.928600,,,,,,,,,
+0.1421734243631363,0.0005354966851882637,0.1421734243631363,17549.0,55,2025-10-30 18:50:45.256392,,,,,,,,,
+0.2093086838722229,0.0012638234766200185,0.2093086838722229,17599.0,55,2025-10-30 18:54:57.809694,,,,,,,,,
+0.18820667266845703,0.0006726249703206122,0.18820667266845703,17649.0,55,2025-10-30 18:59:11.288147,,,,,,,,,
+0.15802934765815735,0.000719047209713608,0.15802934765815735,17699.0,55,2025-10-30 19:03:23.281831,,,,,,,,,
+0.1437891274690628,0.0005206803325563669,0.1437891274690628,17749.0,55,2025-10-30 19:07:36.503411,,,,,,,,,
+0.4220331907272339,0.002366617787629366,0.4220331907272339,17799.0,55,2025-10-30 19:11:48.484051,,,,,,,,,
+,,,,55,2025-10-30 19:14:31.568802,0.2424253225326538,0.0016613082261756063,0.2424253225326538,0.31681445240974426,0.006033079698681831,0.31681445240974426,,,
+,,,,55,2025-10-30 19:15:07.024760,,,,,,,0.2758910059928894,0.006031396333128214,0.2758910059928894
+0.2458655685186386,0.0017821212531998754,0.2458655685186386,17849.0,56,2025-10-30 19:19:08.996242,,,,,,,,,
+0.4426722824573517,0.12501980364322662,0.4426722824573517,17899.0,56,2025-10-30 19:23:21.664239,,,,,,,,,
+0.23588739335536957,0.0014797324547544122,0.23588739335536957,17949.0,56,2025-10-30 19:27:35.065596,,,,,,,,,
+0.4072277843952179,0.004354816861450672,0.4072277843952179,17999.0,56,2025-10-30 19:31:47.389764,,,,,,,,,
+0.3224501311779022,0.0015491953818127513,0.3224501311779022,18049.0,56,2025-10-30 19:36:00.620329,,,,,,,,,
+0.5609304904937744,0.009736570529639721,0.5609304904937744,18099.0,56,2025-10-30 19:40:12.703404,,,,,,,,,
+,,,,56,2025-10-30 19:44:23.502047,0.27016881108283997,0.005083430092781782,0.27016881108283997,0.24988099932670593,0.003343178890645504,0.24988099932670593,,,
+,,,,56,2025-10-30 19:44:54.879363,,,,,,,0.29000693559646606,0.005702406167984009,0.29000693559646606
+0.3262026607990265,0.0017613524105399847,0.3262026607990265,18149.0,57,2025-10-30 19:47:32.945382,,,,,,,,,
+0.22067666053771973,0.0009034413960762322,0.22067666053771973,18199.0,57,2025-10-30 19:51:45.109525,,,,,,,,,
+0.19526661932468414,0.0006850255304016173,0.19526661932468414,18249.0,57,2025-10-30 19:55:58.231231,,,,,,,,,
+0.3477090895175934,0.002208787715062499,0.3477090895175934,18299.0,57,2025-10-30 20:00:10.617525,,,,,,,,,
+0.04790222644805908,0.00018896194524131715,0.04790222644805908,18349.0,57,2025-10-30 20:04:23.641979,,,,,,,,,
+0.4559938907623291,0.003903456497937441,0.4559938907623291,18399.0,57,2025-10-30 20:08:35.991430,,,,,,,,,
+,,,,57,2025-10-30 20:14:18.477144,0.37705734372138977,0.005663054063916206,0.37705734372138977,0.28695160150527954,0.0033893173094838858,0.28695160150527954,,,
+,,,,57,2025-10-30 20:14:48.609700,,,,,,,0.2870723307132721,0.004290382377803326,0.2870723307132721
+0.12100695073604584,0.00041379782487638295,0.12100695073604584,18449.0,58,2025-10-30 20:15:52.899621,,,,,,,,,
+0.1739998161792755,0.0006766775040887296,0.1739998161792755,18499.0,58,2025-10-30 20:20:05.268761,,,,,,,,,
+0.2775837182998657,0.0013082165969535708,0.2775837182998657,18549.0,58,2025-10-30 20:24:18.539898,,,,,,,,,
+0.27326276898384094,0.0010223323479294777,0.27326276898384094,18599.0,58,2025-10-30 20:28:30.804912,,,,,,,,,
+0.5544751286506653,0.007051100954413414,0.5544751286506653,18649.0,58,2025-10-30 20:32:44.072201,,,,,,,,,
+0.2359364777803421,0.0012875847751274705,0.2359364777803421,18699.0,58,2025-10-30 20:36:56.464293,,,,,,,,,
+0.38493454456329346,0.002996532479301095,0.38493454456329346,18749.0,58,2025-10-30 20:41:09.946723,,,,,,,,,
+,,,,58,2025-10-30 20:44:13.912005,0.2758021652698517,0.0020482810214161873,0.2758021652698517,0.2895488440990448,0.0020524244755506516,0.2895488440990448,,,
+,,,,58,2025-10-30 20:44:32.908032,,,,,,,0.30783602595329285,0.005264291074126959,0.30783602595329285
+0.28548213839530945,0.0011157668195664883,0.28548213839530945,18799.0,59,2025-10-30 20:48:24.502213,,,,,,,,,
+0.2653578519821167,0.0009200518252328038,0.2653578519821167,18849.0,59,2025-10-30 20:52:38.871340,,,,,,,,,
+0.17700226604938507,0.000875547353643924,0.17700226604938507,18899.0,59,2025-10-30 20:56:52.678795,,,,,,,,,
+0.3360306918621063,0.003577195107936859,0.3360306918621063,18949.0,59,2025-10-30 21:01:07.160819,,,,,,,,,
+0.05339379981160164,0.00020236308046150953,0.05339379981160164,18999.0,59,2025-10-30 21:05:20.613415,,,,,,,,,
+0.104575514793396,0.00038099821540527046,0.104575514793396,19049.0,59,2025-10-30 21:09:34.425096,,,,,,,,,
+,,,,59,2025-10-30 21:14:05.908564,0.2501496374607086,0.0030506555922329426,0.2501496374607086,0.27805617451667786,0.003396148793399334,0.27805617451667786,,,
+,,,,59,2025-10-30 21:14:34.952237,,,,,,,0.28324654698371887,0.005657047964632511,0.28324654698371887
+0.19972705841064453,0.0008387771667912602,0.19972705841064453,19099.0,60,2025-10-30 21:16:45.950377,,,,,,,,,
+0.21752910315990448,0.004948813933879137,0.21752910315990448,19149.0,60,2025-10-30 21:21:00.203127,,,,,,,,,
+0.4819295108318329,0.0028627533465623856,0.4819295108318329,19199.0,60,2025-10-30 21:25:13.288371,,,,,,,,,
+0.41498520970344543,0.011469520628452301,0.41498520970344543,19249.0,60,2025-10-30 21:29:27.640392,,,,,,,,,
+0.05252896621823311,0.00020113603386562318,0.05252896621823311,19299.0,60,2025-10-30 21:33:41.106251,,,,,,,,,
+0.1721280962228775,0.000913236232008785,0.1721280962228775,19349.0,60,2025-10-30 21:37:55.374067,,,,,,,,,
+,,,,60,2025-10-30 21:43:59.865075,0.3332793414592743,0.0026910488959401846,0.3332793414592743,0.30374160408973694,0.0023974161595106125,0.30374160408973694,,,
+,,,,60,2025-10-30 21:44:15.949003,,,,,,,0.27617084980010986,0.003819730831310153,0.27617084980010986
+0.6598700881004333,0.029871566221117973,0.6598700881004333,19399.0,61,2025-10-30 21:45:07.865120,,,,,,,,,
+0.13056069612503052,0.00045287731336429715,0.13056069612503052,19449.0,61,2025-10-30 21:49:22.344377,,,,,,,,,
+0.3944222927093506,0.002345799468457699,0.3944222927093506,19499.0,61,2025-10-30 21:53:36.171566,,,,,,,,,
+0.17875683307647705,0.0005998060223646462,0.17875683307647705,19549.0,61,2025-10-30 21:57:50.937590,,,,,,,,,
+0.18101215362548828,0.0006871612276881933,0.18101215362548828,19599.0,61,2025-10-30 22:02:05.109393,,,,,,,,,
+0.3736126720905304,0.0021873428486287594,0.3736126720905304,19649.0,61,2025-10-30 22:06:19.474316,,,,,,,,,
+0.2361026108264923,0.0008202680619433522,0.2361026108264923,19699.0,61,2025-10-30 22:10:33.560291,,,,,,,,,
+,,,,61,2025-10-30 22:13:57.997297,0.2959226965904236,0.004094996489584446,0.2959226965904236,0.25356432795524597,0.002047757152467966,0.25356432795524597,,,
+,,,,61,2025-10-30 22:14:29.243014,,,,,,,0.28631532192230225,0.004361058585345745,0.28631532192230225
+0.11312375217676163,0.00038774285349063575,0.11312375217676163,19749.0,62,2025-10-30 22:17:53.636310,,,,,,,,,
+0.34094366431236267,0.005417060572654009,0.34094366431236267,19799.0,62,2025-10-30 22:22:07.820641,,,,,,,,,
+0.20035915076732635,0.0007024967926554382,0.20035915076732635,19849.0,62,2025-10-30 22:26:23.875336,,,,,,,,,
+0.46595099568367004,0.0032367759849876165,0.46595099568367004,19899.0,62,2025-10-30 22:30:39.029254,,,,,,,,,
+0.28764608502388,0.001369024976156652,0.28764608502388,19949.0,62,2025-10-30 22:34:55.166464,,,,,,,,,
+0.2815650999546051,0.0012513665715232491,0.2815650999546051,19999.0,62,2025-10-30 22:39:10.405197,,,,,,,,,
+,,,,62,2025-10-30 22:44:03.095728,0.2806223928928375,0.005452046170830727,0.2806223928928375,0.2911318838596344,0.006440925411880016,0.2911318838596344,,,
+,,,,62,2025-10-30 22:44:19.050493,,,,,,,0.27217790484428406,0.003763536224141717,0.27217790484428406
+0.27263227105140686,0.0016498687909916043,0.27263227105140686,20049.0,63,2025-10-30 22:46:12.192517,,,,,,,,,
+0.4957735538482666,0.002840379485860467,0.4957735538482666,20099.0,63,2025-10-30 22:50:25.819451,,,,,,,,,
+0.2401716560125351,0.0011162047740072012,0.2401716560125351,20149.0,63,2025-10-30 22:54:40.462092,,,,,,,,,
+0.3500569462776184,0.0015643842052668333,0.3500569462776184,20199.0,63,2025-10-30 22:58:53.945621,,,,,,,,,
+0.48207759857177734,0.0037120606284588575,0.48207759857177734,20249.0,63,2025-10-30 23:03:08.544732,,,,,,,,,
+0.21663226187229156,0.0008080576662905514,0.21663226187229156,20299.0,63,2025-10-30 23:07:22.477638,,,,,,,,,
+0.34621462225914,0.00230237515643239,0.34621462225914,20349.0,63,2025-10-30 23:11:37.184702,,,,,,,,,
+,,,,63,2025-10-30 23:13:45.863867,0.24853801727294922,0.0017532591009512544,0.24853801727294922,0.25968557596206665,0.004681110847741365,0.25968557596206665,,,
+,,,,63,2025-10-30 23:14:14.350759,,,,,,,0.27948451042175293,0.0034924009814858437,0.27948451042175293
+0.2961898446083069,0.001238458906300366,0.2961898446083069,20399.0,64,2025-10-30 23:18:52.710097,,,,,,,,,
+0.41182973980903625,0.12646624445915222,0.41182973980903625,20449.0,64,2025-10-30 23:23:07.072453,,,,,,,,,
+0.31432682275772095,0.0013620189856737852,0.31432682275772095,20499.0,64,2025-10-30 23:27:20.618429,,,,,,,,,
+0.3682243227958679,0.0019337731646373868,0.3682243227958679,20549.0,64,2025-10-30 23:31:34.847576,,,,,,,,,
+0.2049693912267685,0.0007757708081044257,0.2049693912267685,20599.0,64,2025-10-30 23:35:48.399026,,,,,,,,,
+0.14555005729198456,0.0005104723968543112,0.14555005729198456,20649.0,64,2025-10-30 23:40:02.925933,,,,,,,,,
+,,,,64,2025-10-30 23:43:42.452177,0.3078145682811737,0.0025779788848012686,0.3078145682811737,0.2979795038700104,0.008530713617801666,0.2979795038700104,,,
+,,,,64,2025-10-30 23:43:59.048976,,,,,,,0.29281651973724365,0.004233677405864,0.29281651973724365
+0.2671510875225067,0.0016304043820127845,0.2671510875225067,20699.0,65,2025-10-30 23:46:59.593535,,,,,,,,,
+0.2299436777830124,0.000836700783111155,0.2299436777830124,20749.0,65,2025-10-30 23:51:13.967974,,,,,,,,,
+0.2483769655227661,0.0023232121020555496,0.2483769655227661,20799.0,65,2025-10-30 23:55:27.583089,,,,,,,,,
+0.2898750305175781,0.028722763061523438,0.2898750305175781,20849.0,65,2025-10-30 23:59:42.243668,,,,,,,,,
+0.40551263093948364,0.002627656329423189,0.40551263093948364,20899.0,65,2025-10-31 00:03:56.051824,,,,,,,,,
+0.465194433927536,0.012713325209915638,0.465194433927536,20949.0,65,2025-10-31 00:08:10.723702,,,,,,,,,
+,,,,65,2025-10-31 00:13:23.679363,0.3182971477508545,0.010295321233570576,0.3182971477508545,0.27342671155929565,0.004693212918937206,0.27342671155929565,,,
+,,,,65,2025-10-31 00:13:41.072343,,,,,,,0.294953852891922,0.003931136801838875,0.294953852891922
+0.37411943078041077,0.025057939812541008,0.37411943078041077,20999.0,66,2025-10-31 00:15:16.076477,,,,,,,,,
+0.3621066212654114,0.001442655106075108,0.3621066212654114,21049.0,66,2025-10-31 00:19:30.203968,,,,,,,,,
+0.12361617386341095,0.0004489654675126076,0.12361617386341095,21099.0,66,2025-10-31 00:23:44.059675,,,,,,,,,
+0.34991785883903503,0.0015395639929920435,0.34991785883903503,21149.0,66,2025-10-31 00:27:58.471680,,,,,,,,,
+0.3160703182220459,0.0013354941038414836,0.3160703182220459,21199.0,66,2025-10-31 00:32:12.463520,,,,,,,,,
+0.2137405127286911,0.0012029267381876707,0.2137405127286911,21249.0,66,2025-10-31 00:36:27.890343,,,,,,,,,
+0.2296985685825348,0.0008797139744274318,0.2296985685825348,21299.0,66,2025-10-31 00:40:41.787647,,,,,,,,,
+,,,,66,2025-10-31 00:43:11.562694,0.2683441638946533,0.0015438940608873963,0.2683441638946533,0.3106372356414795,0.0020751494448632,0.3106372356414795,,,
+,,,,66,2025-10-31 00:43:27.833885,,,,,,,0.289120614528656,0.0039231013506650925,0.289120614528656
+0.26234862208366394,0.002846066141501069,0.26234862208366394,21349.0,67,2025-10-31 00:47:40.204921,,,,,,,,,
+0.6425889730453491,0.03680068626999855,0.6425889730453491,21399.0,67,2025-10-31 00:51:53.882063,,,,,,,,,
+0.31963294744491577,0.0016632777405902743,0.31963294744491577,21449.0,67,2025-10-31 00:56:08.204787,,,,,,,,,
+0.42872169613838196,0.003960881382226944,0.42872169613838196,21499.0,67,2025-10-31 01:00:21.861538,,,,,,,,,
+0.47934606671333313,0.061997316777706146,0.47934606671333313,21549.0,67,2025-10-31 01:04:36.261510,,,,,,,,,
+0.23593947291374207,0.0007771924138069153,0.23593947291374207,21599.0,67,2025-10-31 01:08:49.926164,,,,,,,,,
+,,,,67,2025-10-31 01:12:50.039659,0.3480243980884552,0.004603801295161247,0.3480243980884552,0.26872122287750244,0.0025165320839732885,0.26872122287750244,,,
+,,,,67,2025-10-31 01:13:06.075287,,,,,,,0.28027066588401794,0.003930593375116587,0.28027066588401794
+0.08564038574695587,0.0003089429810643196,0.08564038574695587,21649.0,68,2025-10-31 01:15:50.947468,,,,,,,,,
+0.06241407245397568,0.0002358256751904264,0.06241407245397568,21699.0,68,2025-10-31 01:20:04.780700,,,,,,,,,
+0.31664273142814636,0.0015404049772769213,0.31664273142814636,21749.0,68,2025-10-31 01:24:19.402166,,,,,,,,,
+0.36871811747550964,0.002219654619693756,0.36871811747550964,21799.0,68,2025-10-31 01:28:33.102843,,,,,,,,,
+0.28537726402282715,0.0010618222877383232,0.28537726402282715,21849.0,68,2025-10-31 01:32:47.959331,,,,,,,,,
+0.20937441289424896,0.0008570835343562067,0.20937441289424896,21899.0,68,2025-10-31 01:37:01.796298,,,,,,,,,
+,,,,68,2025-10-31 01:42:34.324260,0.2863263487815857,0.005346320569515228,0.2863263487815857,0.3079766631126404,0.005730404518544674,0.3079766631126404,,,
+,,,,68,2025-10-31 01:42:51.567816,,,,,,,0.28290125727653503,0.004257742315530777,0.28290125727653503
+0.3853665590286255,0.004137059208005667,0.3853665590286255,21949.0,69,2025-10-31 01:44:10.972199,,,,,,,,,
+0.1357482522726059,0.00046441913582384586,0.1357482522726059,21999.0,69,2025-10-31 01:48:24.488283,,,,,,,,,
+0.11956663429737091,0.0005178841529414058,0.11956663429737091,22049.0,69,2025-10-31 01:52:38.988749,,,,,,,,,
+0.2615951597690582,0.0009288225555792451,0.2615951597690582,22099.0,69,2025-10-31 01:56:53.326595,,,,,,,,,
+0.472574919462204,0.0035863141529262066,0.472574919462204,22149.0,69,2025-10-31 02:01:08.412543,,,,,,,,,
+0.18448834121227264,0.0017382836667820811,0.18448834121227264,22199.0,69,2025-10-31 02:05:22.109060,,,,,,,,,
+0.5268524885177612,0.0036247880198061466,0.5268524885177612,22249.0,69,2025-10-31 02:09:36.846785,,,,,,,,,
+,,,,69,2025-10-31 02:12:27.978795,0.28673121333122253,0.002929314039647579,0.28673121333122253,0.31041470170021057,0.0027193515561521053,0.31041470170021057,,,
+,,,,69,2025-10-31 02:12:45.430815,,,,,,,0.2786281108856201,0.0041016098111867905,0.2786281108856201
+0.40702691674232483,0.002591874450445175,0.40702691674232483,22299.0,70,2025-10-31 02:16:42.015632,,,,,,,,,
+0.4530651271343231,0.004731566645205021,0.4530651271343231,22349.0,70,2025-10-31 02:20:56.393765,,,,,,,,,
+0.19102947413921356,0.0006872456870041788,0.19102947413921356,22399.0,70,2025-10-31 02:25:09.784472,,,,,,,,,
+0.23121769726276398,0.0008428986766375601,0.23121769726276398,22449.0,70,2025-10-31 02:29:24.695478,,,,,,,,,
+0.21557146310806274,0.0008114281808957458,0.21557146310806274,22499.0,70,2025-10-31 02:33:38.626825,,,,,,,,,
+0.2849307358264923,0.007888419553637505,0.2849307358264923,22549.0,70,2025-10-31 02:37:53.757126,,,,,,,,,
+,,,,70,2025-10-31 02:42:21.104123,0.3326384425163269,0.004449267406016588,0.3326384425163269,0.3063797652721405,0.0029580569826066494,0.3063797652721405,,,
+,,,,70,2025-10-31 02:42:39.728287,,,,,,,0.2735738456249237,0.00425443472340703,0.2735738456249237
+0.2916037440299988,0.0022806148044764996,0.2916037440299988,22599.0,71,2025-10-31 02:45:06.613108,,,,,,,,,
+0.16173681616783142,0.0005623698816634715,0.16173681616783142,22649.0,71,2025-10-31 02:49:22.100167,,,,,,,,,
+0.13655376434326172,0.0004722262383438647,0.13655376434326172,22699.0,71,2025-10-31 02:53:36.604390,,,,,,,,,
+0.21068285405635834,0.0008810852305032313,0.21068285405635834,22749.0,71,2025-10-31 02:57:52.080185,,,,,,,,,
+0.49499690532684326,0.0026221030857414007,0.49499690532684326,22799.0,71,2025-10-31 03:02:06.581533,,,,,,,,,
+0.3693511486053467,0.0019529751734808087,0.3693511486053467,22849.0,71,2025-10-31 03:06:22.516677,,,,,,,,,
+,,,,71,2025-10-31 03:12:23.460262,0.27993473410606384,0.0028380092699080706,0.27993473410606384,0.2654459774494171,0.0019374906551092863,0.2654459774494171,,,
+,,,,71,2025-10-31 03:12:48.327263,,,,,,,0.29179322719573975,0.004436278250068426,0.29179322719573975
+0.09069672971963882,0.0003161273489240557,0.09069672971963882,22899.0,72,2025-10-31 03:13:48.335581,,,,,,,,,
+0.19106878340244293,0.0020054394844919443,0.19106878340244293,22949.0,72,2025-10-31 03:18:04.481310,,,,,,,,,
+0.13589052855968475,0.0004534997569862753,0.13589052855968475,22999.0,72,2025-10-31 03:22:19.729554,,,,,,,,,
+0.03547734394669533,0.00014823072706349194,0.03547734394669533,23049.0,72,2025-10-31 03:26:36.191943,,,,,,,,,
+0.2072361558675766,0.0007328566280193627,0.2072361558675766,23099.0,72,2025-10-31 03:30:51.622588,,,,,,,,,
+0.3736068308353424,0.005656563676893711,0.3736068308353424,23149.0,72,2025-10-31 03:35:07.932237,,,,,,,,,
+0.347050279378891,0.1223207488656044,0.347050279378891,23199.0,72,2025-10-31 03:39:22.566255,,,,,,,,,
+,,,,72,2025-10-31 03:42:41.390789,0.2621373236179352,0.0027779079973697662,0.2621373236179352,0.3052568733692169,0.004369552247226238,0.3052568733692169,,,
+,,,,72,2025-10-31 03:43:01.193215,,,,,,,0.28975266218185425,0.006207260303199291,0.28975266218185425
+0.20295892655849457,0.0011022287653759122,0.20295892655849457,23249.0,73,2025-10-31 03:46:38.025038,,,,,,,,,
+0.324017733335495,0.001485234359279275,0.324017733335495,23299.0,73,2025-10-31 03:50:52.298734,,,,,,,,,
+0.4614235460758209,0.0024837760720402002,0.4614235460758209,23349.0,73,2025-10-31 03:55:07.824256,,,,,,,,,
+0.30008041858673096,0.002611936070024967,0.30008041858673096,23399.0,73,2025-10-31 03:59:22.306267,,,,,,,,,
+0.3476969599723816,0.0020159322302788496,0.3476969599723816,23449.0,73,2025-10-31 04:03:37.757757,,,,,,,,,
+0.28695017099380493,0.0010317066917195916,0.28695017099380493,23499.0,73,2025-10-31 04:07:52.242670,,,,,,,,,
+,,,,73,2025-10-31 04:12:37.623604,0.31767547130584717,0.002223499119281769,0.31767547130584717,0.30413901805877686,0.0035914538893848658,0.30413901805877686,,,
+,,,,73,2025-10-31 04:12:55.232780,,,,,,,0.2775272727012634,0.0033878295216709375,0.2775272727012634
+0.25431543588638306,0.0012833878863602877,0.25431543588638306,23549.0,74,2025-10-31 04:14:56.971943,,,,,,,,,
+0.16031207144260406,0.0005482752458192408,0.16031207144260406,23599.0,74,2025-10-31 04:19:10.575829,,,,,,,,,
+0.27572253346443176,0.013418438844382763,0.27572253346443176,23649.0,74,2025-10-31 04:23:25.775673,,,,,,,,,
+0.20762695372104645,0.0010508153354749084,0.20762695372104645,23699.0,74,2025-10-31 04:27:39.737841,,,,,,,,,
+0.42804908752441406,0.011354652233421803,0.42804908752441406,23749.0,74,2025-10-31 04:31:55.090525,,,,,,,,,
+0.09221867471933365,0.0003324274148326367,0.09221867471933365,23799.0,74,2025-10-31 04:36:09.270245,,,,,,,,,
+0.6512531638145447,0.004677440505474806,0.6512531638145447,23849.0,74,2025-10-31 04:40:21.215590,,,,,,,,,
+,,,,74,2025-10-31 04:42:23.515595,0.3105297386646271,0.0037355360109359026,0.3105297386646271,0.2958117127418518,0.004833501297980547,0.2958117127418518,,,
+,,,,74,2025-10-31 04:42:40.571380,,,,,,,0.2745775580406189,0.004439263138920069,0.2745775580406189
+0.3581690788269043,0.001350653008557856,0.3581690788269043,23899.0,75,2025-10-31 04:47:24.765155,,,,,,,,,
+0.2490723878145218,0.0012459267163649201,0.2490723878145218,23949.0,75,2025-10-31 04:51:39.904389,,,,,,,,,
+0.20821665227413177,0.0007509443676099181,0.20821665227413177,23999.0,75,2025-10-31 04:55:54.314193,,,,,,,,,
+0.23451675474643707,0.0009233673335984349,0.23451675474643707,24049.0,75,2025-10-31 05:00:10.048581,,,,,,,,,
+0.41245296597480774,0.0020962203852832317,0.41245296597480774,24099.0,75,2025-10-31 05:04:25.040717,,,,,,,,,
+0.14787039160728455,0.0005442536785267293,0.14787039160728455,24149.0,75,2025-10-31 05:08:40.222921,,,,,,,,,
+,,,,75,2025-10-31 05:12:12.968393,0.31578725576400757,0.0022711458150297403,0.31578725576400757,0.2754175662994385,0.010096726939082146,0.2754175662994385,,,
+,,,,75,2025-10-31 05:12:32.101677,,,,,,,0.28704866766929626,0.0057426197454333305,0.28704866766929626
+0.17195148766040802,0.0006288409931585193,0.17195148766040802,24199.0,76,2025-10-31 05:15:44.475805,,,,,,,,,
+0.1591099351644516,0.0005379825597628951,0.1591099351644516,24249.0,76,2025-10-31 05:19:59.209825,,,,,,,,,
+0.13128025829792023,0.0004485461104195565,0.13128025829792023,24299.0,76,2025-10-31 05:24:13.596493,,,,,,,,,
+0.20057831704616547,0.0007395964348688722,0.20057831704616547,24349.0,76,2025-10-31 05:28:29.862343,,,,,,,,,
+0.10232866555452347,0.0003615549358073622,0.10232866555452347,24399.0,76,2025-10-31 05:32:45.204389,,,,,,,,,
+0.08333413302898407,0.0003014782560057938,0.08333413302898407,24449.0,76,2025-10-31 05:37:01.736403,,,,,,,,,
+,,,,76,2025-10-31 05:42:10.268120,0.2756592333316803,0.007283040788024664,0.2756592333316803,0.27614670991897583,0.0016906970413401723,0.27614670991897583,,,
+,,,,76,2025-10-31 05:42:28.236658,,,,,,,0.2848929762840271,0.004131563473492861,0.2848929762840271
+0.1580120474100113,0.0005489398026838899,0.1580120474100113,24499.0,77,2025-10-31 05:44:13.673620,,,,,,,,,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761846227.node-0.2050.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761846227.node-0.2050.0
new file mode 100644
index 0000000000000000000000000000000000000000..d1b6b5ae2146f5da69a985b31680897f9e239039
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_1/tf/events.out.tfevents.1761846227.node-0.2050.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95df147a9863d2cdc0be49ef4cf44b4d4f0ee584a07016d59d620b9e619ddec6
+size 55888
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..2cbd6c197159cf8745462ff0e6af0b2f1ad112cf
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 2, "tags_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv", "metrics_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-31 06:05:02.518393", "exp_hash": "testtube_v2"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/metrics.csv
@@ -0,0 +1 @@
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761890704.node-0.2039.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761890704.node-0.2039.0
new file mode 100644
index 0000000000000000000000000000000000000000..861a2896d1bf3007f6d3ec3f56f1f8d9df1dcc34
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_2/tf/events.out.tfevents.1761890704.node-0.2039.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1326e4dea37f1f50286679ff2662749cdd5b5c899d52597cb6d2ef114e944cd
+size 88
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta.experiment b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta.experiment
new file mode 100644
index 0000000000000000000000000000000000000000..9fb0775bb41edc0e308ca5c84f2d4f53376adb4a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta.experiment
@@ -0,0 +1 @@
+{"name": "testtube", "version": 3, "tags_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv", "metrics_path": "./logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv", "autosave": false, "description": null, "created_at": "2025-10-31 06:19:51.938230", "exp_hash": "testtube_v3"}
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv
new file mode 100644
index 0000000000000000000000000000000000000000..942a47139f86778b1f3e5ad923104dd038b1ce88
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/meta_tags.csv
@@ -0,0 +1 @@
+key,value
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv
new file mode 100644
index 0000000000000000000000000000000000000000..3b19a4b7f5064ffbccb723eea0c5adfa97357246
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/metrics.csv
@@ -0,0 +1,21 @@
+train/loss_simple_step,train/loss_vlb_step,train/loss_step,global_step,epoch,created_at,val/loss_simple,val/loss_vlb,val/loss,val/loss_simple_ema,val/loss_vlb_ema,val/loss_ema,train/loss_simple_epoch,train/loss_vlb_epoch,train/loss_epoch
+0.16542162001132965,0.0009119179449044168,0.16542162001132965,24499.0,77,2025-10-31 06:23:47.199706,,,,,,,,,
+0.3623897135257721,0.12417513132095337,0.3623897135257721,24549.0,77,2025-10-31 06:28:03.172094,,,,,,,,,
+0.40529534220695496,0.12571537494659424,0.40529534220695496,24599.0,77,2025-10-31 06:32:16.780851,,,,,,,,,
+0.3449431359767914,0.003119318513199687,0.3449431359767914,24649.0,77,2025-10-31 06:36:32.914028,,,,,,,,,
+0.29835590720176697,0.002196893561631441,0.29835590720176697,24699.0,77,2025-10-31 06:40:46.257806,,,,,,,,,
+0.6672286987304688,0.12987467646598816,0.6672286987304688,24749.0,77,2025-10-31 06:45:03.366070,,,,,,,,,
+0.131357803940773,0.000526526418980211,0.131357803940773,24799.0,77,2025-10-31 06:49:16.560747,,,,,,,,,
+,,,,77,2025-10-31 06:52:03.117988,0.28831642866134644,0.002885563997551799,0.28831642866134644,0.27810245752334595,0.0051479279063642025,0.27810245752334595,,,
+,,,,77,2025-10-31 06:52:54.205030,,,,,,,0.28482744097709656,0.004544297233223915,0.28482744097709656
+0.29872941970825195,0.002703337464481592,0.29872941970825195,24849.0,78,2025-10-31 06:57:45.349744,,,,,,,,,
+0.3147170841693878,0.006378016900271177,0.3147170841693878,24899.0,78,2025-10-31 07:01:59.606373,,,,,,,,,
+0.24917656183242798,0.0009646091493777931,0.24917656183242798,24949.0,78,2025-10-31 07:06:16.011276,,,,,,,,,
+0.2608265280723572,0.0012748067965731025,0.2608265280723572,24999.0,78,2025-10-31 07:10:30.443870,,,,,,,,,
+0.2963445484638214,0.0013238799292594194,0.2963445484638214,25049.0,78,2025-10-31 07:14:46.832359,,,,,,,,,
+0.05422722548246384,0.0002059258404187858,0.05422722548246384,25099.0,78,2025-10-31 07:19:01.128892,,,,,,,,,
+,,,,78,2025-10-31 07:23:03.280382,0.3215169608592987,0.004063682164996862,0.3215169608592987,0.3016454875469208,0.0030227508395910263,0.3016454875469208,,,
+,,,,78,2025-10-31 07:23:50.595417,,,,,,,0.2850608229637146,0.0034778970293700695,0.2850608229637146
+0.28421592712402344,0.0010798118310049176,0.28421592712402344,25149.0,79,2025-10-31 07:27:32.408833,,,,,,,,,
+0.03173404932022095,0.00013555384066421539,0.03173404932022095,25199.0,79,2025-10-31 07:31:48.835135,,,,,,,,,
+0.3687518835067749,0.008241117000579834,0.3687518835067749,25249.0,79,2025-10-31 07:36:05.946930,,,,,,,,,
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761891594.node-0.2049.0 b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761891594.node-0.2049.0
new file mode 100644
index 0000000000000000000000000000000000000000..7426b4d287dfeece532a025a691df3ab2db29c62
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/logs/full_ct_3d_with_body_mask2/testtube/version_3/tf/events.out.tfevents.1761891594.node-0.2049.0
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb581c31ef62eccc55c363fe31196626c5b494eb081bb0ca7e1957742ea75b9a
+size 5622
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/main.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..8775f89b0b4a1f417e7f5c9855236c046aa0cb13
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/main.py
@@ -0,0 +1,774 @@
+import argparse, os, sys, datetime, glob, importlib, csv
+import numpy as np
+import time
+import torch
+import torchvision
+import enum
+
+# 保存原始实现(可选,用于调试或回滚)
+_enum_format_orig = enum.Enum.__format__
+
+def _enum_format_value(self, format_spec: str) -> str:
+ # 如果指定了 format 规范,就交给 value 本身的格式化;否则直接返回 value
+ return format(self.value, format_spec) if format_spec else str(self.value)
+
+# 全局替换 Enum.__format__
+enum.Enum.__format__ = _enum_format_value
+
+import pytorch_lightning as pl
+
+from packaging import version
+from omegaconf import OmegaConf
+from torch.utils.data import random_split, DataLoader, Dataset, Subset
+from functools import partial
+from PIL import Image
+
+from pytorch_lightning import seed_everything
+from pytorch_lightning.trainer import Trainer
+from pytorch_lightning.callbacks import ModelCheckpoint, Callback, LearningRateMonitor
+from pytorch_lightning.utilities.distributed import rank_zero_only
+from pytorch_lightning.utilities import rank_zero_info
+
+from ldm.data.base import Txt2ImgIterableBaseDataset
+from ldm.util import instantiate_from_config
+
+
+def get_parser(**parser_kwargs):
+ def str2bool(v):
+ if isinstance(v, bool):
+ return v
+ if v.lower() in ("yes", "true", "t", "y", "1"):
+ return True
+ elif v.lower() in ("no", "false", "f", "n", "0"):
+ return False
+ else:
+ raise argparse.ArgumentTypeError("Boolean value expected.")
+
+ parser = argparse.ArgumentParser(**parser_kwargs)
+ parser.add_argument(
+ "-n",
+ "--name",
+ type=str,
+ const=True,
+ default="",
+ nargs="?",
+ help="postfix for logdir",
+ )
+ parser.add_argument(
+ "-r",
+ "--resume",
+ type=str,
+ const=True,
+ default="",
+ nargs="?",
+ help="resume from logdir or checkpoint in logdir",
+ )
+ parser.add_argument(
+ "-b",
+ "--base",
+ nargs="*",
+ metavar="base_config.yaml",
+ help="paths to base configs. Loaded from left-to-right. "
+ "Parameters can be overwritten or added with command-line options of the form `--key value`.",
+ default=list(),
+ )
+ parser.add_argument(
+ "-t",
+ "--train",
+ type=str2bool,
+ const=True,
+ default=False,
+ nargs="?",
+ help="train",
+ )
+ parser.add_argument(
+ "--no-test",
+ type=str2bool,
+ const=True,
+ default=False,
+ nargs="?",
+ help="disable test",
+ )
+ parser.add_argument(
+ "-p",
+ "--project",
+ help="name of new or path to existing project"
+ )
+ parser.add_argument(
+ "-d",
+ "--debug",
+ type=str2bool,
+ nargs="?",
+ const=True,
+ default=False,
+ help="enable post-mortem debugging",
+ )
+ parser.add_argument(
+ "-s",
+ "--seed",
+ type=int,
+ default=23,
+ help="seed for seed_everything",
+ )
+ parser.add_argument(
+ "-f",
+ "--postfix",
+ type=str,
+ default="",
+ help="post-postfix for default name",
+ )
+ parser.add_argument(
+ "-l",
+ "--logdir",
+ type=str,
+ default="logs",
+ help="directory for logging dat shit",
+ )
+ parser.add_argument(
+ "--scale_lr",
+ type=str2bool,
+ nargs="?",
+ const=True,
+ default=True,
+ help="scale base-lr by ngpu * batch_size * n_accumulate",
+ )
+ return parser
+
+
+def nondefault_trainer_args(opt):
+ parser = argparse.ArgumentParser()
+ parser = Trainer.add_argparse_args(parser)
+ args = parser.parse_args([])
+ return sorted(k for k in vars(args) if getattr(opt, k) != getattr(args, k))
+
+
+class WrappedDataset(Dataset):
+ """Wraps an arbitrary object with __len__ and __getitem__ into a pytorch dataset"""
+
+ def __init__(self, dataset):
+ self.data = dataset
+
+ def __len__(self):
+ return len(self.data)
+
+ def __getitem__(self, idx):
+ return self.data[idx]
+
+
+def worker_init_fn(_):
+ worker_info = torch.utils.data.get_worker_info()
+
+ dataset = worker_info.dataset
+ worker_id = worker_info.id
+
+ if isinstance(dataset, Txt2ImgIterableBaseDataset):
+ split_size = dataset.num_records // worker_info.num_workers
+ # reset num_records to the true number to retain reliable length information
+ dataset.sample_ids = dataset.valid_ids[worker_id * split_size:(worker_id + 1) * split_size]
+ current_id = np.random.choice(len(np.random.get_state()[1]), 1)
+ return np.random.seed(np.random.get_state()[1][current_id] + worker_id)
+ else:
+ return np.random.seed(np.random.get_state()[1][0] + worker_id)
+
+
+class DataModuleFromConfig(pl.LightningDataModule):
+ def __init__(self, batch_size, train=None, validation=None, test=None, predict=None,
+ wrap=False, num_workers=None, shuffle_test_loader=False, use_worker_init_fn=False,
+ shuffle_val_dataloader=False):
+ super().__init__()
+ self.batch_size = batch_size
+ self.dataset_configs = dict()
+ self.num_workers = num_workers if num_workers is not None else batch_size * 2
+ self.use_worker_init_fn = use_worker_init_fn
+ if train is not None:
+ self.dataset_configs["train"] = train
+ self.train_dataloader = self._train_dataloader
+ if validation is not None:
+ self.dataset_configs["validation"] = validation
+ self.val_dataloader = partial(self._val_dataloader, shuffle=shuffle_val_dataloader)
+ if test is not None:
+ self.dataset_configs["test"] = test
+ self.test_dataloader = partial(self._test_dataloader, shuffle=shuffle_test_loader)
+ if predict is not None:
+ self.dataset_configs["predict"] = predict
+ self.predict_dataloader = self._predict_dataloader
+ self.wrap = wrap
+
+ def prepare_data(self):
+ for data_cfg in self.dataset_configs.values():
+ instantiate_from_config(data_cfg)
+
+ def setup(self, stage=None):
+ self.datasets = dict(
+ (k, instantiate_from_config(self.dataset_configs[k]))
+ for k in self.dataset_configs)
+ if self.wrap:
+ for k in self.datasets:
+ self.datasets[k] = WrappedDataset(self.datasets[k])
+
+ def _train_dataloader(self):
+ is_iterable_dataset = isinstance(self.datasets['train'], Txt2ImgIterableBaseDataset)
+ if is_iterable_dataset or self.use_worker_init_fn:
+ init_fn = worker_init_fn
+ else:
+ init_fn = None
+ return DataLoader(self.datasets["train"], batch_size=self.batch_size,
+ num_workers=self.num_workers, shuffle=False if is_iterable_dataset else True,
+ worker_init_fn=init_fn)
+
+ def _val_dataloader(self, shuffle=False):
+ if isinstance(self.datasets['validation'], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn:
+ init_fn = worker_init_fn
+ else:
+ init_fn = None
+ return DataLoader(self.datasets["validation"],
+ batch_size=self.batch_size,
+ num_workers=self.num_workers,
+ worker_init_fn=init_fn,
+ shuffle=shuffle)
+
+ def _test_dataloader(self, shuffle=False):
+ is_iterable_dataset = isinstance(self.datasets['train'], Txt2ImgIterableBaseDataset)
+ if is_iterable_dataset or self.use_worker_init_fn:
+ init_fn = worker_init_fn
+ else:
+ init_fn = None
+
+ # do not shuffle dataloader for iterable dataset
+ shuffle = shuffle and (not is_iterable_dataset)
+
+ return DataLoader(self.datasets["test"], batch_size=self.batch_size,
+ num_workers=self.num_workers, worker_init_fn=init_fn, shuffle=shuffle)
+
+ def _predict_dataloader(self, shuffle=False):
+ if isinstance(self.datasets['predict'], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn:
+ init_fn = worker_init_fn
+ else:
+ init_fn = None
+ return DataLoader(self.datasets["predict"], batch_size=self.batch_size,
+ num_workers=self.num_workers, worker_init_fn=init_fn)
+
+
+class SetupCallback(Callback):
+ def __init__(self, resume, now, logdir, ckptdir, cfgdir, config, lightning_config):
+ super().__init__()
+ self.resume = resume
+ self.now = now
+ self.logdir = logdir
+ self.ckptdir = ckptdir
+ self.cfgdir = cfgdir
+ self.config = config
+ self.lightning_config = lightning_config
+
+ def on_keyboard_interrupt(self, trainer, pl_module):
+ if trainer.global_rank == 0:
+ print("Summoning checkpoint.")
+ ckpt_path = os.path.join(self.ckptdir, "last.ckpt")
+ trainer.save_checkpoint(ckpt_path)
+
+ def on_pretrain_routine_start(self, trainer, pl_module):
+ if trainer.global_rank == 0:
+ # Create logdirs and save configs
+ os.makedirs(self.logdir, exist_ok=True)
+ os.makedirs(self.ckptdir, exist_ok=True)
+ os.makedirs(self.cfgdir, exist_ok=True)
+
+ if "callbacks" in self.lightning_config:
+ if 'metrics_over_trainsteps_checkpoint' in self.lightning_config['callbacks']:
+ os.makedirs(os.path.join(self.ckptdir, 'trainstep_checkpoints'), exist_ok=True)
+ print("Project config")
+ print(OmegaConf.to_yaml(self.config))
+ OmegaConf.save(self.config,
+ os.path.join(self.cfgdir, "{}-project.yaml".format(self.now)))
+
+ print("Lightning config")
+ print(OmegaConf.to_yaml(self.lightning_config))
+ OmegaConf.save(OmegaConf.create({"lightning": self.lightning_config}),
+ os.path.join(self.cfgdir, "{}-lightning.yaml".format(self.now)))
+
+ else:
+ # ModelCheckpoint callback created log directory --- remove it
+ if not self.resume and os.path.exists(self.logdir):
+ dst, name = os.path.split(self.logdir)
+ dst = os.path.join(dst, "child_runs", name)
+ os.makedirs(os.path.split(dst)[0], exist_ok=True)
+ try:
+ os.rename(self.logdir, dst)
+ except FileNotFoundError:
+ pass
+
+
+class ImageLogger(Callback):
+ def __init__(self, batch_frequency, max_images, clamp=True, increase_log_steps=True,
+ rescale=True, disabled=False, log_on_batch_idx=False, log_first_step=False,
+ log_images_kwargs=None):
+ super().__init__()
+ self.rescale = rescale
+ self.batch_freq = batch_frequency
+ self.max_images = max_images
+ self.logger_log_images = {
+ pl.loggers.TestTubeLogger: self._testtube,
+ }
+ self.log_steps = [2 ** n for n in range(int(np.log2(self.batch_freq)) + 1)]
+ if not increase_log_steps:
+ self.log_steps = [self.batch_freq]
+ self.clamp = clamp
+ self.disabled = disabled
+ self.log_on_batch_idx = log_on_batch_idx
+ self.log_images_kwargs = log_images_kwargs if log_images_kwargs else {}
+ self.log_first_step = log_first_step
+
+ @rank_zero_only
+ def _testtube(self, pl_module, images, batch_idx, split):
+ for k in images:
+ grid = torchvision.utils.make_grid(images[k])
+ grid = (grid + 1.0) / 2.0 # -1,1 -> 0,1; c,h,w
+
+ tag = f"{split}/{k}"
+ pl_module.logger.experiment.add_image(
+ tag, grid,
+ global_step=pl_module.global_step)
+
+ @rank_zero_only
+ def log_local(self, save_dir, split, images,
+ global_step, current_epoch, batch_idx):
+ root = os.path.join(save_dir, "images", split)
+ for k in images:
+ grid = torchvision.utils.make_grid(images[k], nrow=4)
+ if self.rescale:
+ grid = (grid + 1.0) / 2.0 # -1,1 -> 0,1; c,h,w
+ grid = grid.transpose(0, 1).transpose(1, 2).squeeze(-1)
+ grid = grid.numpy()
+ grid = (grid * 255).astype(np.uint8)
+ filename = "{}_gs-{:06}_e-{:06}_b-{:06}.png".format(
+ k,
+ global_step,
+ current_epoch,
+ batch_idx)
+ path = os.path.join(root, filename)
+ os.makedirs(os.path.split(path)[0], exist_ok=True)
+ Image.fromarray(grid).save(path)
+
+ def log_img(self, pl_module, batch, batch_idx, split="train"):
+ check_idx = batch_idx if self.log_on_batch_idx else pl_module.global_step
+ if (self.check_frequency(check_idx) and # batch_idx % self.batch_freq == 0
+ hasattr(pl_module, "log_images") and
+ callable(pl_module.log_images) and
+ self.max_images > 0):
+ logger = type(pl_module.logger)
+
+ is_train = pl_module.training
+ if is_train:
+ pl_module.eval()
+
+ with torch.no_grad():
+ images = pl_module.log_images(batch, split=split, **self.log_images_kwargs)
+
+ for k in images:
+ N = min(images[k].shape[0], self.max_images)
+ images[k] = images[k][:N]
+ if isinstance(images[k], torch.Tensor):
+ images[k] = images[k].detach().cpu()
+ if self.clamp:
+ images[k] = torch.clamp(images[k], -1., 1.)
+
+ self.log_local(pl_module.logger.save_dir, split, images,
+ pl_module.global_step, pl_module.current_epoch, batch_idx)
+
+ logger_log_images = self.logger_log_images.get(logger, lambda *args, **kwargs: None)
+ logger_log_images(pl_module, images, pl_module.global_step, split)
+
+ if is_train:
+ pl_module.train()
+
+ def check_frequency(self, check_idx):
+ if ((check_idx % self.batch_freq) == 0 or (check_idx in self.log_steps)) and (
+ check_idx > 0 or self.log_first_step):
+ try:
+ self.log_steps.pop(0)
+ except IndexError as e:
+ print(e)
+ pass
+ return True
+ return False
+
+ def on_train_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx):
+ if not self.disabled and (pl_module.global_step > 0 or self.log_first_step):
+ self.log_img(pl_module, batch, batch_idx, split="train")
+
+ def on_validation_batch_end(self, trainer, pl_module, outputs, batch, batch_idx, dataloader_idx):
+ # if not self.disabled and pl_module.global_step > 0:
+ # self.log_img(pl_module, batch, batch_idx, split="val")
+ if hasattr(pl_module, 'calibrate_grad_norm'):
+ if (pl_module.calibrate_grad_norm and batch_idx % 25 == 0) and batch_idx > 0:
+ self.log_gradients(trainer, pl_module, batch_idx=batch_idx)
+
+
+class CUDACallback(Callback):
+ # see https://github.com/SeanNaren/minGPT/blob/master/mingpt/callback.py
+ def on_train_epoch_start(self, trainer, pl_module):
+ # Reset the memory use counter
+ torch.cuda.reset_peak_memory_stats(trainer.root_gpu)
+ torch.cuda.synchronize(trainer.root_gpu)
+ self.start_time = time.time()
+
+ def on_train_epoch_end(self, trainer, pl_module, outputs):
+ torch.cuda.synchronize(trainer.root_gpu)
+ max_memory = torch.cuda.max_memory_allocated(trainer.root_gpu) / 2 ** 20
+ epoch_time = time.time() - self.start_time
+
+ try:
+ max_memory = trainer.training_type_plugin.reduce(max_memory)
+ epoch_time = trainer.training_type_plugin.reduce(epoch_time)
+
+ rank_zero_info(f"Average Epoch time: {epoch_time:.2f} seconds")
+ rank_zero_info(f"Average Peak memory {max_memory:.2f}MiB")
+ except AttributeError:
+ pass
+
+
+if __name__ == "__main__":
+ # custom parser to specify config files, train, test and debug mode,
+ # postfix, resume.
+ # `--key value` arguments are interpreted as arguments to the trainer.
+ # `nested.key=value` arguments are interpreted as config parameters.
+ # configs are merged from left-to-right followed by command line parameters.
+
+ # model:
+ # base_learning_rate: float
+ # target: path to lightning module
+ # params:
+ # key: value
+ # data:
+ # target: main.DataModuleFromConfig
+ # params:
+ # batch_size: int
+ # wrap: bool
+ # train:
+ # target: path to train dataset
+ # params:
+ # key: value
+ # validation:
+ # target: path to validation dataset
+ # params:
+ # key: value
+ # test:
+ # target: path to test dataset
+ # params:
+ # key: value
+ # lightning: (optional, has sane defaults and can be specified on cmdline)
+ # trainer:
+ # additional arguments to trainer
+ # logger:
+ # logger to instantiate
+ # modelcheckpoint:
+ # modelcheckpoint to instantiate
+ # callbacks:
+ # callback1:
+ # target: importpath
+ # params:
+ # key: value
+
+ now = datetime.datetime.now().strftime("%Y-%m-%dT%H-%M-%S")
+
+ # add cwd for convenience and to make classes in this file available when
+ # running as `python main.py`
+ # (in particular `main.DataModuleFromConfig`)
+ sys.path.append(os.getcwd())
+
+ parser = get_parser()
+ parser = Trainer.add_argparse_args(parser)
+
+ opt, unknown = parser.parse_known_args()
+ if opt.name and opt.resume:
+ raise ValueError(
+ "-n/--name and -r/--resume cannot be specified both."
+ "If you want to resume training in a new log folder, "
+ "use -n/--name in combination with --resume_from_checkpoint"
+ )
+ if opt.resume:
+ # if not os.path.exists(opt.resume):
+ # raise ValueError("Cannot find {}".format(opt.resume))
+ if os.path.isfile(opt.resume):
+ paths = opt.resume.split("/")
+ # idx = len(paths)-paths[::-1].index("logs")+1
+ # logdir = "/".join(paths[:idx])
+ logdir = "/".join(paths[:-2])
+ ckpt = opt.resume
+ else:
+ # assert os.path.isdir(opt.resume), opt.resume
+ logdir = opt.resume.rstrip("/")
+ ckpt = os.path.join(logdir, "checkpoints", "last.ckpt")
+
+ if os.path.exists(ckpt):
+ opt.resume_from_checkpoint = ckpt
+ base_configs = sorted(glob.glob(os.path.join(logdir, "configs/*.yaml")))
+ opt.base = base_configs + opt.base
+ _tmp = logdir.split("/")
+ nowname = _tmp[-1]
+ else:
+ if opt.name:
+ name = opt.name
+ elif opt.base:
+ cfg_fname = os.path.split(opt.base[0])[-1]
+ cfg_name = os.path.splitext(cfg_fname)[0]
+ name = cfg_name
+ else:
+ name = ""
+ nowname = name + opt.postfix
+ logdir = os.path.join(opt.logdir, nowname)
+ else:
+ if opt.name:
+ # name = "_" + opt.name
+ name = opt.name
+ elif opt.base:
+ cfg_fname = os.path.split(opt.base[0])[-1]
+ cfg_name = os.path.splitext(cfg_fname)[0]
+ # name = "_" + cfg_name
+ name = cfg_name
+ else:
+ name = ""
+ # nowname = now + name + opt.postfix
+ nowname = name + opt.postfix
+ logdir = os.path.join(opt.logdir, nowname)
+
+ ckptdir = os.path.join(logdir, "checkpoints")
+ cfgdir = os.path.join(logdir, "configs")
+ seed_everything(opt.seed)
+
+ try:
+ # init and save configs
+ configs = [OmegaConf.load(cfg) for cfg in opt.base]
+ cli = OmegaConf.from_dotlist(unknown)
+ config = OmegaConf.merge(*configs, cli)
+ lightning_config = config.pop("lightning", OmegaConf.create())
+ # merge trainer cli with config
+ trainer_config = lightning_config.get("trainer", OmegaConf.create())
+ # default to ddp
+ trainer_config["accelerator"] = "ddp"
+ for k in nondefault_trainer_args(opt):
+ trainer_config[k] = getattr(opt, k)
+ if not "gpus" in trainer_config:
+ del trainer_config["accelerator"]
+ cpu = True
+ else:
+ gpuinfo = trainer_config["gpus"]
+ print(f"Running on GPUs {gpuinfo}")
+ cpu = False
+ trainer_opt = argparse.Namespace(**trainer_config)
+ lightning_config.trainer = trainer_config
+
+ # model
+ model = instantiate_from_config(config.model)
+
+ # trainer and callbacks
+ trainer_kwargs = dict()
+
+ # default logger configs
+ default_logger_cfgs = {
+ "wandb": {
+ "target": "pytorch_lightning.loggers.WandbLogger",
+ "params": {
+ "name": nowname,
+ "save_dir": logdir,
+ "offline": opt.debug,
+ "id": nowname,
+ }
+ },
+ "testtube": {
+ "target": "pytorch_lightning.loggers.TestTubeLogger",
+ "params": {
+ "name": "testtube",
+ "save_dir": logdir,
+ }
+ },
+ }
+ default_logger_cfg = default_logger_cfgs["testtube"]
+ if "logger" in lightning_config:
+ logger_cfg = lightning_config.logger
+ else:
+ logger_cfg = OmegaConf.create()
+ logger_cfg = OmegaConf.merge(default_logger_cfg, logger_cfg)
+ trainer_kwargs["logger"] = instantiate_from_config(logger_cfg)
+
+ # modelcheckpoint - use TrainResult/EvalResult(checkpoint_on=metric) to
+ # specify which metric is used to determine best models
+ default_modelckpt_cfg = {
+ "target": "pytorch_lightning.callbacks.ModelCheckpoint",
+ "params": {
+ "dirpath": ckptdir,
+ "filename": "{epoch:06}",
+ "verbose": True,
+ "save_last": True,
+ }
+ }
+ if hasattr(model, "monitor"):
+ print(f"Monitoring {model.monitor} as checkpoint metric.")
+ default_modelckpt_cfg["params"]["monitor"] = model.monitor
+ default_modelckpt_cfg["params"]["save_top_k"] = 3
+
+ if "modelcheckpoint" in lightning_config:
+ modelckpt_cfg = lightning_config.modelcheckpoint
+ else:
+ modelckpt_cfg = OmegaConf.create()
+ modelckpt_cfg = OmegaConf.merge(default_modelckpt_cfg, modelckpt_cfg)
+ print(f"Merged modelckpt-cfg: \n{modelckpt_cfg}")
+ if version.parse(pl.__version__) < version.parse('1.4.0'):
+ trainer_kwargs["checkpoint_callback"] = instantiate_from_config(modelckpt_cfg)
+
+ # add callback which sets up log directory
+ default_callbacks_cfg = {
+ "setup_callback": {
+ "target": "main.SetupCallback",
+ "params": {
+ "resume": opt.resume,
+ "now": now,
+ "logdir": logdir,
+ "ckptdir": ckptdir,
+ "cfgdir": cfgdir,
+ "config": config,
+ "lightning_config": lightning_config,
+ }
+ },
+ "image_logger": {
+ "target": "main.ImageLogger",
+ "params": {
+ "batch_frequency": 750,
+ "max_images": 4,
+ "clamp": True
+ }
+ },
+ "learning_rate_logger": {
+ "target": "main.LearningRateMonitor",
+ "params": {
+ "logging_interval": "step",
+ # "log_momentum": True
+ }
+ },
+ "cuda_callback": {
+ "target": "main.CUDACallback"
+ },
+ }
+ if version.parse(pl.__version__) >= version.parse('1.4.0'):
+ default_callbacks_cfg.update({'checkpoint_callback': modelckpt_cfg})
+
+ if "callbacks" in lightning_config:
+ callbacks_cfg = lightning_config.callbacks
+ else:
+ callbacks_cfg = OmegaConf.create()
+
+ if 'metrics_over_trainsteps_checkpoint' in callbacks_cfg:
+ print(
+ 'Caution: Saving checkpoints every n train steps without deleting. This might require some free space.')
+ default_metrics_over_trainsteps_ckpt_dict = {
+ 'metrics_over_trainsteps_checkpoint':
+ {"target": 'pytorch_lightning.callbacks.ModelCheckpoint',
+ 'params': {
+ "dirpath": os.path.join(ckptdir, 'trainstep_checkpoints'),
+ "filename": "{epoch:06}-{step:09}",
+ "verbose": True,
+ 'save_top_k': -1,
+ 'every_n_train_steps': 10000,
+ 'save_weights_only': True
+ }
+ }
+ }
+ default_callbacks_cfg.update(default_metrics_over_trainsteps_ckpt_dict)
+
+ callbacks_cfg = OmegaConf.merge(default_callbacks_cfg, callbacks_cfg)
+ if 'ignore_keys_callback' in callbacks_cfg and hasattr(trainer_opt, 'resume_from_checkpoint'):
+ callbacks_cfg.ignore_keys_callback.params['ckpt_path'] = trainer_opt.resume_from_checkpoint
+ elif 'ignore_keys_callback' in callbacks_cfg:
+ del callbacks_cfg['ignore_keys_callback']
+
+ trainer_kwargs["callbacks"] = [instantiate_from_config(callbacks_cfg[k]) for k in callbacks_cfg]
+
+ trainer = Trainer.from_argparse_args(trainer_opt, **trainer_kwargs)
+ trainer.logdir = logdir ###
+
+ # data
+ data = instantiate_from_config(config.data)
+ # NOTE according to https://pytorch-lightning.readthedocs.io/en/latest/datamodules.html
+ # calling these ourselves should not be necessary but it is.
+ # lightning still takes care of proper multiprocessing though
+ # breakpoint()
+ data.prepare_data()
+ data.setup()
+
+ # breakpoint()
+ # CTReportDataset(data_folder='train', csv_file='/home/v-qichen3/blob/ct_rate/CT-RATE/radiology_text_reports/train_reports.csv')
+
+ print("#### Data #####")
+ for k in data.datasets:
+ print(f"{k}, {data.datasets[k].__class__.__name__}, {len(data.datasets[k])}")
+
+ # configure learning rate
+ bs, base_lr = config.data.params.batch_size, config.model.base_learning_rate
+ # breakpoint()
+ if not cpu:
+ ngpu = len(lightning_config.trainer.gpus.strip(",").split(','))
+ else:
+ ngpu = 1
+ if 'accumulate_grad_batches' in lightning_config.trainer:
+ accumulate_grad_batches = lightning_config.trainer.accumulate_grad_batches
+ else:
+ accumulate_grad_batches = 1
+ print(f"accumulate_grad_batches = {accumulate_grad_batches}")
+ lightning_config.trainer.accumulate_grad_batches = accumulate_grad_batches
+ if opt.scale_lr:
+ model.learning_rate = accumulate_grad_batches * ngpu * bs * base_lr
+ print(
+ "Setting learning rate to {:.2e} = {} (accumulate_grad_batches) * {} (num_gpus) * {} (batchsize) * {:.2e} (base_lr)".format(
+ model.learning_rate, accumulate_grad_batches, ngpu, bs, base_lr))
+ else:
+ model.learning_rate = base_lr
+ print("++++ NOT USING LR SCALING ++++")
+ print(f"Setting learning rate to {model.learning_rate:.2e}")
+
+
+ # allow checkpointing via USR1
+ def melk(*args, **kwargs):
+ # run all checkpoint hooks
+ if trainer.global_rank == 0:
+ print("Summoning checkpoint.")
+ ckpt_path = os.path.join(ckptdir, "last.ckpt")
+ trainer.save_checkpoint(ckpt_path)
+
+
+ def divein(*args, **kwargs):
+ if trainer.global_rank == 0:
+ import pudb;
+ pudb.set_trace()
+
+
+ import signal
+
+ signal.signal(signal.SIGUSR1, melk)
+ signal.signal(signal.SIGUSR2, divein)
+
+ # run
+ if opt.train:
+ try:
+ trainer.fit(model, data)
+ except Exception:
+ melk()
+ raise
+ if not opt.no_test and not trainer.interrupted:
+ trainer.test(model, data)
+ except Exception:
+ if opt.debug and trainer.global_rank == 0:
+ try:
+ import pudb as debugger
+ except ImportError:
+ import pdb as debugger
+ debugger.post_mortem()
+ raise
+ finally:
+ # move newly created debug project to debug_runs
+ if opt.debug and not opt.resume and trainer.global_rank == 0:
+ dst, name = os.path.split(logdir)
+ dst = os.path.join(dst, "debug_runs", name)
+ os.makedirs(os.path.split(dst)[0], exist_ok=True)
+ os.rename(logdir, dst)
+ if trainer.global_rank == 0:
+ print(trainer.profiler.summary())
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation.py
new file mode 100644
index 0000000000000000000000000000000000000000..982545ca730f3ef8f7d0373e7b9a44c7fefb887a
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation.py
@@ -0,0 +1,292 @@
+### Tumor Generateion
+import random
+import cv2
+import elasticdeform
+import numpy as np
+from scipy.ndimage import gaussian_filter
+
+
+def generate_prob_function(mask_shape):
+ sigma = np.random.uniform(3,15)
+ # uniform noise generate
+ a = np.random.uniform(0, 1, size=(mask_shape[0],mask_shape[1],mask_shape[2]))
+
+ # Gaussian filter
+ # this taks some time
+ a_2 = gaussian_filter(a, sigma=sigma)
+
+ scale = np.random.uniform(0.19, 0.21)
+ base = np.random.uniform(0.04, 0.06)
+ a = scale * (a_2 - np.min(a_2)) / (np.max(a_2) - np.min(a_2)) + base
+
+ return a
+
+# Step 1: Random select (numbers) location for tumor.
+def random_select(mask_scan):
+ # we first find z index and then sample point with z slice
+ z_start, z_end = np.where(np.any(mask_scan, axis=(0, 1)))[0][[0, -1]]
+
+ # we need to strict number z's position (0.3 - 0.7 in the middle of liver)
+ z = round(random.uniform(0.3, 0.7) * (z_end - z_start)) + z_start
+
+ liver_mask = mask_scan[..., z]
+
+ # erode the mask (we don't want the edge points)
+ kernel = np.ones((5,5), dtype=np.uint8)
+ liver_mask = cv2.erode(liver_mask, kernel, iterations=1)
+
+ coordinates = np.argwhere(liver_mask == 1)
+ random_index = np.random.randint(0, len(coordinates))
+ xyz = coordinates[random_index].tolist() # get x,y
+ xyz.append(z)
+ potential_points = xyz
+
+ return potential_points
+
+# Step 2 : generate the ellipsoid
+def get_ellipsoid(x, y, z):
+ """"
+ x, y, z is the radius of this ellipsoid in x, y, z direction respectly.
+ """
+ sh = (4*x, 4*y, 4*z)
+ out = np.zeros(sh, int)
+ aux = np.zeros(sh)
+ radii = np.array([x, y, z])
+ com = np.array([2*x, 2*y, 2*z]) # center point
+
+ # calculate the ellipsoid
+ bboxl = np.floor(com-radii).clip(0,None).astype(int)
+ bboxh = (np.ceil(com+radii)+1).clip(None, sh).astype(int)
+ roi = out[tuple(map(slice,bboxl,bboxh))]
+ roiaux = aux[tuple(map(slice,bboxl,bboxh))]
+ logrid = *map(np.square,np.ogrid[tuple(
+ map(slice,(bboxl-com)/radii,(bboxh-com-1)/radii,1j*(bboxh-bboxl)))]),
+ dst = (1-sum(logrid)).clip(0,None)
+ mask = dst>roiaux
+ roi[mask] = 1
+ np.copyto(roiaux,dst,where=mask)
+
+ return out
+
+def get_fixed_geo(mask_scan, tumor_type):
+
+ enlarge_x, enlarge_y, enlarge_z = 160, 160, 160
+ geo_mask = np.zeros((mask_scan.shape[0] + enlarge_x, mask_scan.shape[1] + enlarge_y, mask_scan.shape[2] + enlarge_z), dtype=np.int8)
+ # texture_map = np.zeros((mask_scan.shape[0] + enlarge_x, mask_scan.shape[1] + enlarge_y, mask_scan.shape[2] + enlarge_z), dtype=np.float16)
+ tiny_radius, small_radius, medium_radius, large_radius = 4, 8, 16, 32
+
+ if tumor_type == 'tiny':
+ num_tumor = random.randint(3,10)
+ for _ in range(num_tumor):
+ # Tiny tumor
+ x = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius))
+ y = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius))
+ z = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius))
+ sigma = random.uniform(0.5,1)
+
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste small tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+
+ if tumor_type == 'small':
+ num_tumor = random.randint(3,10)
+ for _ in range(num_tumor):
+ # Small tumor
+ x = random.randint(int(0.75*small_radius), int(1.25*small_radius))
+ y = random.randint(int(0.75*small_radius), int(1.25*small_radius))
+ z = random.randint(int(0.75*small_radius), int(1.25*small_radius))
+ sigma = random.randint(1, 2)
+
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ # texture = get_texture((4*x, 4*y, 4*z))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste small tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+ # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture
+
+ if tumor_type == 'medium':
+ num_tumor = random.randint(2, 5)
+ for _ in range(num_tumor):
+ # medium tumor
+ x = random.randint(int(0.75*medium_radius), int(1.25*medium_radius))
+ y = random.randint(int(0.75*medium_radius), int(1.25*medium_radius))
+ z = random.randint(int(0.75*medium_radius), int(1.25*medium_radius))
+ sigma = random.randint(3, 6)
+
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ # texture = get_texture((4*x, 4*y, 4*z))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste medium tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+ # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture
+
+ if tumor_type == 'large':
+ num_tumor = random.randint(1,3)
+ for _ in range(num_tumor):
+ # Large tumor
+ x = random.randint(int(0.75*large_radius), int(1.25*large_radius))
+ y = random.randint(int(0.75*large_radius), int(1.25*large_radius))
+ z = random.randint(int(0.75*large_radius), int(1.25*large_radius))
+ sigma = random.randint(5, 10)
+
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ # texture = get_texture((4*x, 4*y, 4*z))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste small tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+ # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture
+
+ if tumor_type == "mix":
+ # tiny
+ num_tumor = random.randint(3,10)
+ for _ in range(num_tumor):
+ # Tiny tumor
+ x = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius))
+ y = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius))
+ z = random.randint(int(0.75*tiny_radius), int(1.25*tiny_radius))
+ sigma = random.uniform(0.5,1)
+
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste small tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+
+ # small
+ num_tumor = random.randint(5,10)
+ for _ in range(num_tumor):
+ # Small tumor
+ x = random.randint(int(0.75*small_radius), int(1.25*small_radius))
+ y = random.randint(int(0.75*small_radius), int(1.25*small_radius))
+ z = random.randint(int(0.75*small_radius), int(1.25*small_radius))
+ sigma = random.randint(1, 2)
+
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ # texture = get_texture((4*x, 4*y, 4*z))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste small tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+ # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture
+
+ # medium
+ num_tumor = random.randint(2, 5)
+ for _ in range(num_tumor):
+ # medium tumor
+ x = random.randint(int(0.75*medium_radius), int(1.25*medium_radius))
+ y = random.randint(int(0.75*medium_radius), int(1.25*medium_radius))
+ z = random.randint(int(0.75*medium_radius), int(1.25*medium_radius))
+ sigma = random.randint(3, 6)
+
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ # texture = get_texture((4*x, 4*y, 4*z))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste medium tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+ # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture
+
+ # large
+ num_tumor = random.randint(1,3)
+ for _ in range(num_tumor):
+ # Large tumor
+ x = random.randint(int(0.75*large_radius), int(1.25*large_radius))
+ y = random.randint(int(0.75*large_radius), int(1.25*large_radius))
+ z = random.randint(int(0.75*large_radius), int(1.25*large_radius))
+ sigma = random.randint(5, 10)
+ geo = get_ellipsoid(x, y, z)
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,1))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(1,2))
+ geo = elasticdeform.deform_random_grid(geo, sigma=sigma, points=3, order=0, axis=(0,2))
+ # texture = get_texture((4*x, 4*y, 4*z))
+ point = random_select(mask_scan)
+ new_point = [point[0] + enlarge_x//2, point[1] + enlarge_y//2, point[2] + enlarge_z//2]
+ x_low, x_high = new_point[0] - geo.shape[0]//2, new_point[0] + geo.shape[0]//2
+ y_low, y_high = new_point[1] - geo.shape[1]//2, new_point[1] + geo.shape[1]//2
+ z_low, z_high = new_point[2] - geo.shape[2]//2, new_point[2] + geo.shape[2]//2
+
+ # paste small tumor geo into test sample
+ geo_mask[x_low:x_high, y_low:y_high, z_low:z_high] += geo
+ # texture_map[x_low:x_high, y_low:y_high, z_low:z_high] = texture
+
+ geo_mask = geo_mask[enlarge_x//2:-enlarge_x//2, enlarge_y//2:-enlarge_y//2, enlarge_z//2:-enlarge_z//2]
+ # texture_map = texture_map[enlarge_x//2:-enlarge_x//2, enlarge_y//2:-enlarge_y//2, enlarge_z//2:-enlarge_z//2]
+ geo_mask = (geo_mask * mask_scan) >=1
+
+ return geo_mask
+
+
+def SynthesisTumor(mask_scan, tumor_type, texture):
+ # for speed_generate_tumor, we only send the liver part into the generate program
+ x_start, x_end = np.where(np.any(mask_scan, axis=(1, 2)))[0][[0, -1]]
+ y_start, y_end = np.where(np.any(mask_scan, axis=(0, 2)))[0][[0, -1]]
+ z_start, z_end = np.where(np.any(mask_scan, axis=(0, 1)))[0][[0, -1]]
+
+ # shrink the boundary
+ x_start, x_end = max(0, x_start+1), min(mask_scan.shape[0], x_end-1)
+ y_start, y_end = max(0, y_start+1), min(mask_scan.shape[1], y_end-1)
+ z_start, z_end = max(0, z_start+1), min(mask_scan.shape[2], z_end-1)
+
+ liver_mask = get_fixed_geo(mask_scan, tumor_type)
+
+ mask_scan[x_start:x_end, y_start:y_end, z_start:z_end] = liver_mask
+
+ return mask_scan
+
+if __name__ == 'main':
+ geo_mask = get_fixed_geo(mask_scan, tumor_type)
+
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation_pipeline.py b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation_pipeline.py
new file mode 100644
index 0000000000000000000000000000000000000000..79ec5941dea8f6d790313e38918b79e02bc3597b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/mask_generation_pipeline.py
@@ -0,0 +1,127 @@
+import glob
+import nibabel as nib
+import numpy as np
+import os
+import torch
+
+from einops import rearrange
+from omegaconf import OmegaConf
+from torch.utils.data import DataLoader
+from tqdm import tqdm
+
+from ldm.util import instantiate_from_config
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ "-s",
+ "--save_path",
+ type=str,
+ default=None,
+)
+
+args = parser.parse_args()
+ddim_steps=args.time_steps
+# breakpoint()
+
+config = OmegaConf.load('./configs/latent-diffusion/mask_generation.yaml')
+data = instantiate_from_config(config.data)
+data.prepare_data()
+data.setup()
+
+
+save_path = args.save_path
+if not os.path.exists(save_path):
+ os.makedirs(save_path)
+
+val_dataset = data.datasets['validation']
+batch_size = 1
+valloader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False, num_workers=2, pin_memory=True)
+val_num = len(val_dataset)
+save_gt = True
+
+for idx, data in tqdm(enumerate(valloader)):
+
+ if idx >= val_num:
+ break
+
+ name = data['name'][0]
+ volume_data = data['volume_data']
+
+
+ window_length = 16
+ h = 1
+ slice_num =volume_data.shape[1]
+ result = torch.zeros((batch_size, slice_num, 4, 64, 64)).cuda()
+
+
+ upper_iters = (slice_num-h) // (window_length-h)+1 if (slice_num-h)%(window_length-h) != 0 else (slice_num-h) // (window_length-h)
+ print('upper_iters', upper_iters)
+ # breakpoint()
+ for i in range(upper_iters):
+ print('i', i)
+ input_data={}
+ if i == upper_iters-1:
+ input_data['name'] = data['name']
+ input_data['volume_data'] = data['volume_data'][:,-window_length:].to(device)
+ input_data['masked_data'] = data['masked_data'][:,-window_length:].to(device)
+ input_data['tumor_mask'] = data['tumor_mask'][:,-window_length:].to(device)
+ else:
+ input_data['volume_data'] = data['volume_data'][:, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['masked_data'] = data['masked_data'][:, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+ input_data['tumor_mask'] = data['tumor_mask'][:, i*window_length-i*h:(i+1)*window_length-i*h].to(device)
+
+ with torch.no_grad():
+ _, c = model.get_input(input_data, model.first_stage_key)
+
+ if i == 0:
+ samples_i, _ = model.sample_log(cond=c, batch_size=window_length, ddim=True, eta=1., ddim_steps=ddim_steps)
+ else:
+ samples_i, _ = model.sample_log(cond=c, batch_size=window_length, ddim=True, eta=1., ddim_steps=ddim_steps, previous=x_minus1)
+ # breakpoint()
+ samples_i = rearrange(samples_i, '(b z) c h w -> b z c h w', z=window_length)
+
+ if i == upper_iters-1:
+ result[:, -window_length+h:] = samples_i[:,h:,...]
+ else:
+ if i == 0:
+ result[:, :window_length] = samples_i
+ else:
+ result[:, i*window_length-i*h+h:(i+1)*window_length-i*h] = samples_i[:, h:]
+ x_minus1 = samples_i[:, -h:,...]
+ # breakpoint()
+ result = rearrange(result, 'b z c h w -> (b z) c h w')
+ x_result = torch.zeros((result.shape[0],3,512,512))
+ # breakpoint()
+ dec_unit = 16
+ num_dec_iter = slice_num // dec_unit + 1 if slice_num % dec_unit != 0 else slice_num // dec_unit
+ for i in range(num_dec_iter):
+ if i == num_dec_iter - 1:
+ x_result[-dec_unit:] = model.decode_first_stage(result[-dec_unit:])
+ x_result[i*dec_unit:(i+1)*dec_unit] = model.decode_first_stage(result[i*dec_unit:(i+1)*dec_unit])
+ x_result[x_result>1.0] = 1.0
+ x_result[x_result<-1.0] = -1.0
+ x_result = (x_result+1)/2
+ x_result = rearrange(x_result, '(b z) c h w -> b z c h w', z=slice_num)
+ x_result_ = x_result[0].mean(axis=1).detach().cpu().numpy()
+ # x_result = x_result[0,:,0,...].detach().cpu().numpy()
+
+ x_result = x_result_.transpose(2,1,0)
+ # x_result = np.rot90(x_result, k=1, axes=(0,1))
+ # x_result = np.flip(x_result,axis=(0,1))
+ # import imageio as io
+ # io.imsave('exp.png', (x_result[:,:,400]*255).astype(np.uint8))
+
+ # breakpoint()
+ ref_root = '/storage/chenqi/data/CT/Task03_Liver/imagesTr'
+ ref_nii = os.path.join(ref_root, name+'.nii.gz')
+ affine = nib.load(ref_nii).affine
+
+ x_result = x_result*425.0 - 175.0
+ data_path = os.path.join(save_path, str(f'{name}.nii.gz'))
+ data_nii = nib.Nifti1Image(x_result.astype(np.int16), affine)
+
+ nib.save(data_nii, data_path)
+
+ # breakpoint()
+
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8f470dcf462f73d7e9d9d0c5af065b006e01f43b
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/misc/overview.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d22a8ed27837d92fc7a7583cbf898c6442ab127dc914cb9d02dd0cfa05ff7802
+size 122928
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/recon_test.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/recon_test.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e5645cc3c82b8252fa9c75c20f6227c10e8ed8ac
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/recon_test.txt
@@ -0,0 +1,5 @@
+kl-f8
+Test average MSE: 229.57958816063248 average PSNR: 25.01263807051269 average SSIM: 0.7587649705198748
+
+kl-f4
+Test average MSE: 229.5796621685892 average PSNR: 25.01263423093404 average SSIM: 0.7587650323867727
\ No newline at end of file
diff --git a/GEM-3D-ct-text4-newdata-newvae-retrain-disease/requirements.txt b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..432c8e6ef057b8d911781b09493f63e5d2f8e0ce
--- /dev/null
+++ b/GEM-3D-ct-text4-newdata-newvae-retrain-disease/requirements.txt
@@ -0,0 +1,101 @@
+absl-py==2.3.0
+aiohappyeyeballs==2.6.1
+aiohttp==3.12.12
+aiosignal==1.3.2
+antlr4-python3-runtime==4.8
+async-timeout==5.0.1
+attrs==25.3.0
+blosc2==2.5.1
+Brotli==1.0.9
+cachetools==5.5.2
+certifi==2025.4.26
+charset-normalizer==3.3.2
+contourpy==1.3.0
+cycler==0.12.1
+easydict==1.11
+einops==0.7.0
+filelock==3.17.0
+fonttools==4.58.2
+frozenlist==1.7.0
+fsspec==2025.5.1
+ftfy==6.3.1
+future==1.0.0
+gmpy2==2.2.1
+google-auth==2.40.3
+google-auth-oauthlib==1.2.2
+grpcio==1.73.0
+hf-xet==1.1.3
+huggingface-hub==0.33.0
+idna==3.7
+imageio==2.31.6
+importlib_metadata==8.7.0
+importlib_resources==6.5.2
+Jinja2==3.1.6
+joblib==1.5.1
+kiwisolver==1.4.7
+lazy_loader==0.4
+lightning-utilities==0.9.0
+lpips==0.1.4
+Markdown==3.8
+MarkupSafe==3.0.2
+matplotlib==3.9.4
+mkl_fft==1.3.11
+mkl_random==1.2.8
+mkl-service==2.4.1
+mpmath==1.3.0
+msgpack==1.1.0
+multidict==6.4.4
+ndindex==1.10.0
+networkx==3.2.1
+nibabel==5.2.0
+numpy
+oauthlib==3.2.2
+omegaconf==2.1.1
+open-clip-torch==2.7.0
+opencv-python==4.8.1.78
+packaging==25.0
+pandas==2.1.2
+Pillow==10.0.1
+pip==22.3.1
+propcache==0.3.2
+protobuf==4.23.4
+py-cpuinfo==9.0.0
+pyasn1==0.6.1
+pyasn1_modules==0.4.2
+pyDeprecate==0.3.1
+pyparsing==3.1.1
+PySocks==1.7.1
+python-dateutil==2.9.0.post0
+pytorch-lightning==1.4.2
+pytz==2025.2
+PyYAML==6.0.2
+regex==2024.11.6
+requests==2.32.3
+requests-oauthlib==2.0.0
+rsa==4.9.1
+scikit-image==0.22.0
+scikit-learn==1.3.2
+scipy==1.11.3
+seaborn==0.13.0
+setuptools==78.1.1
+six==1.17.0
+sympy==1.13.3
+tensorboard==2.15.1
+tensorboard-data-server==0.7.2
+tensorboardX==2.6.2.2
+test_tube==0.7.5
+threadpoolctl==3.6.0
+tifffile==2024.8.30
+tokenizers==0.13.3
+tqdm==4.66.1
+transformers==4.29.2
+triton==2.1.0
+typing_extensions==4.12.2
+tzdata==2025.2
+urllib3==2.3.0
+volumentations-3D==1.0.4
+wcwidth==0.2.13
+Werkzeug==3.1.3
+wheel==0.45.1
+yarl==1.20.1
+zipp==3.23.0